有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JNI库在垃圾收集时释放内存?

我正在使用JCUDA,想知道JNI对象是否足够聪明,可以在垃圾收集时释放它们?我能理解为什么这在所有情况下都不起作用,但我知道它在我的情况下会起作用,所以我接下来的问题是:我如何才能做到这一点?我可以设置“模式”吗?我需要建立一个抽象层吗?或者答案真的是“不,永远不要尝试”,那么为什么不呢

编辑:我指的只是通过JNI创建的本机对象,而不是Java对象。我知道所有Java对象都被平等地对待,即垃圾收集


共 (1) 个答案

  1. # 1 楼答案

    在JNI中创建的Java对象与所有其他Java对象相同,并且在时机成熟时会被垃圾收集和销毁。为了避免过早销毁此类对象,我们经常使用JNI函数env->NewGlobalRef()(但它的使用绝不限于在本机中创建的对象)

    另一方面,本机对象不接受垃圾收集