根据JNI文档,当您保留由JVM管理的某些内存时,GetStringCritical()禁用垃圾收集。如果在调用GetString()之前调用Java层或执行阻塞操作,则使用此参数代替ReleaseStringCritical()会使本机陷入死锁的风险。那么Critical函数的好处是什么,如果它是同步的,那么在访问JVM管理的内存时禁用垃圾回收?

最佳答案

首先进行更正:根据规范,GetXxxCritical()方法可能会禁用垃圾收集。


  那么关键功能有什么好处,


使用GetXxxCritical()方法的优点是,它们更有可能返回指向原始数据的指针,而不是返回数据的副本。这意味着它们可能会更快。当然,这是以记录的限制/警告为代价的。


  ...,它与您访问JVM管理的内存时禁用垃圾收集同义吗?


好吧看到我的纠正。这些方法可能会禁用垃圾回收,也可能不会。这将取决于您的平台如何实现JNI接口,还可能取决于其他因素,例如JVM垃圾收集器选项。

10-06 13:35
查看更多