Bob*_*ies 6 java java-native-interface java-8
我们正在运行一个带有JNI层的Java 8应用程序,该层由于C层中某处出现内存不足错误而崩溃.
与通常的hs_err_pid.log文件一起,我们注意到这次我们还收到了replay_pid.log文件.我做了一些广泛的google-foo,几乎找不到关于这个文件的任何信息.
有没有人见过这个文件,有谁知道它包含什么以及如何最好地分析它?
小智 4
该文件由 java 热点生成,用于提供有关问题发生时操作的重播信息。无论它是否为您提供足够具体的信息来告诉您问题出在哪里,似乎都是偶然的,但它确实有助于告诉您当时总体上发生了什么。
OpenJDK 下也报告了关于发生分段错误后生成重播文件的类似问题。据说这个问题已在以后的版本中得到解决,因此,如果您使用的版本低于 8u40,我会升级并查看是否可以解决问题。(已报告的问题)
如果没有,那么您将不得不开始深入研究 C/C++ 文件,找出导致 seg 错误的原因。由于您使用的是 JNI,需要记住的一件事(请原谅我,如果您知道的话)是,如果您在 Java 中通过 JNI 到 C/C++ 进行调用,然后在该调用中分配任何内存,则内存分配不是当你的 Java 对象被垃圾回收时被释放。您必须手动释放分配的内存。如果一个函数多次调用同一个 C/C++ 类,并且每次都分配更多内存,那么最终您将遇到此问题。
| 归档时间: |
|
| 查看次数: |
2920 次 |
| 最近记录: |