繁体   English   中英

Android NDK:保持活动的C ++对象

[英]Android NDK: keeping alive C++ objects

我已经阅读了这篇文章以及有关如何使C ++对象保持活动状态的答案。

Android NDK,保留实时C ++对象

但是我还有一些不明白的地方。 我知道jlong​​可以存储一个内存地址,但是jlong​​不能仅存储该C ++对象的初始地址吗? 如果是这样,Dalvik GC将不知道对象的内存在哪里结束,这意味着C ++实例可能在我们仍需要时被GC销毁了。 我该如何防止这种情况发生?

还是C ++实例在没有GC管理的情况下保留在本机堆之类的东西中,因此对象可以安全地保留在仅需要显式释放内存功能的内存中?

第二个是正确的。 C ++对象在本机堆中创建,不受JVM的控制。 因此,垃圾收集器永远无法访问这些对象。 即使您使用某种机制将C ++指针保留在Java中,对于Java来说,它们也只是未知的jlong ,而Dalvik仍然不知道如何销毁或以其他方式操纵这些对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM