根据JNI文档,GetStringCritical()
禁用垃圾收集,同时保留由JVM管理的某些内存。如果在调用GetString()
之前调用Java层或执行阻塞操作,则使用此代替ReleaseStringCritical()
会使您的本机处于死锁风险中。那么,关键功能有什么好处,如果它是同步的,在访问JVM托管内存时禁用垃圾回收?
答案 0 :(得分:4)
首先进行更正:根据规范,GetXxxCritical()
方法可能禁用垃圾回收。
那么关键功能的好处是什么,
使用GetXxxCritical()
方法的优点是它们更有可能返回指向原始数据的指针而不是数据的副本。这意味着他们可能会更快。当然,就记录在案的限制/警告而言,这需要付出代价。
...当您访问JVM托管内存时它是否与禁用垃圾回收同义?
没有;看我的纠正。方法可能禁用垃圾回收,或者可能不。它取决于您的平台如何实现JNI接口,以及可能还有其他方面,如JVM垃圾收集器选项。