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