我的问题涉及在 Android 操作系统中使用通过 Swig 向 Java 公开的本机 NDK 库。
本机库是一个 OpenGLES 引擎。在应用程序的生命周期中,java 代码可能会创建本地类的实例,我们将使用这些实例来提供引擎。困扰我的是这些类可能会在 Java 端收集垃圾。在这种情况下,主引擎线程(GLThread)之外的另一个线程(HeapWorker)将通过 swig 生成的 finalize 方法删除对象。这会导致本机引擎中的一些并发问题,其中对象可以在 HeapWorker 线程删除期间使用。
是否有可能:
1 - 以某种方式自定义垃圾收集器,使其与 GLThread 同步?
2 - 运行终结器 GLThread ?
3 - 在垃圾收集期间锁定 GLThread 吗?
谢谢你的帮助。