[英]Using JNA's Native.setProtected in production code
我已经看到JNA 崩溃保护功能描述以“在定义新库和编写测试时遇到使 VM 崩溃的内存访问错误并不少见”开头。 这向我表明,这种崩溃保护真正用于调试/开发的早期阶段。 在生产中将其保留是否安全,或者是否存在我应该注意的大量性能成本/其他原因将其关闭?
对于 Windows,它在默认情况下处于开启状态并且安全地离开这种方式,因为它使用结构化异常处理来捕获错误(您仍然应该尝试正常关闭,因为无法保证捕获的错误可以以任何方式恢复)。
对于使用信号处理来捕获错误的平台,您可能不应该在生产中使用它,因为 VM 本身使用相同的信号。 在开发中,您通常需要使用jsig
库,以便 JNA 能够在不干扰 JVM 的情况下正确捕获信号(反之亦然),并且您不太可能在生产中执行此操作。
没有性能成本,更多的是可靠性问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.