我有一个Java应用程序,通过JNI调用遗留应用程序的许多不同本地方法。但是JVM在任何JNI调用之外的随机位置出现堆栈转储的崩溃。有时它会在GC期间崩溃,有时会在类加载和其他位置崩溃。我怀疑一个或多个本地方法正在破坏JVM堆或一些其他数据结构。我需要知道是哪个调用导致了这个问题,这样我就可以修复本地实现。
这个遗留应用程序是第三方DLL,我没有源代码和符号信息。为了使其可从Java调用,我构建了一个使用JNI调用约定的包装器DLL。
完美的解决方案是扩展JVM选项,强制JVM在每次JNI调用后自动检查堆及其其他数据结构的完整性。
你知道有什么可以帮助的吗?
P.S. 请不要告诉我要在JVM和遗留应用程序之间构建套接字或管道层,因为我们的要求不允许这样做。这是关于错误检测,而不是架构设计。
这个遗留应用程序是第三方DLL,我没有源代码和符号信息。为了使其可从Java调用,我构建了一个使用JNI调用约定的包装器DLL。
完美的解决方案是扩展JVM选项,强制JVM在每次JNI调用后自动检查堆及其其他数据结构的完整性。
你知道有什么可以帮助的吗?
P.S. 请不要告诉我要在JVM和遗留应用程序之间构建套接字或管道层,因为我们的要求不允许这样做。这是关于错误检测,而不是架构设计。