草庐IT

nativeHandle

全部标签

java - 包装 C++ 对象的最佳 JNI 模式?

我正在开发一个JavaAPI,其中许多Java对象实际上是等效C++对象的包装器。Java对象创建C++对象,并负责在不再需要它们时释放它们。我想知道为此使用的最佳模式,我可以看到两个可能的选项:使用静态native方法调用和最终变量来保存native句柄,在构造函数中构造C++对象。publicabstractclassNativeBackedObject1implementsjava.lang.AutoCloseable{protectedfinallong_nativeHandle;protectedfinalAtomicBoolean_nativeOwner;protected

java - 使用通用 PhantomReference 类删除 native 对等点

正如HansBoehm在GoogleI/O'17演讲“HowtoManageNativeC++MemoryinAndroid”中建议我使用PhantomReference类来确保正确删除native对等点。在链接视频中18min57sec他展示了一个对象将自身注册到PhantomReference类的示例实现。这个PhantomReference类,他随后在19min49sec显示.所以我为我的示例对象复制了他的方法。见下文。虽然这种方法工作正常,但它无法扩展。我需要创建相当多的对象,但我还没有找到创建基类的方法(无论是为我的对象还是PhantomReference基类),它可以接受任