在生产代码中使用JNA的Native.setProtected

时间:2015-07-30 18:16:08

标签: java jna

我已经看到JNA Crash protection功能描述以“在定义新库并编写测试以解决导致VM崩溃的内存访问错误”这一点并不少见。这告诉我,这种崩溃保护实际上是用于调试/早期开发阶段。将它留在生产中是否安全,或者我应该注意的是否有很大的性能成本/其他理由将其关闭?

1 个答案:

答案 0 :(得分:2)

对于Windows,默认情况下启用并保持安全,因为它使用结构化异常处理来捕获错误(您仍应尝试优雅地关闭,因为不能保证被捕获的错误无论如何都是可以恢复的。)

对于使用信号处理来捕获错误的平台,您可能在生产中使用它,因为VM本身使用相同的信号。在开发过程中,您通常需要使用jsig库,以便JNA能够在不干扰JVM的情况下正确捕获信号(反之亦然),并且您不太可能使用它在生产中这样做。

没有性能成本,更多的是可靠性问题。