【发布时间】:2011-12-27 04:00:09
【问题描述】:
我的 JVM 中大致在应用程序的同一阶段遇到了段错误,但在崩溃报告中具有不同的堆栈跟踪。然而,它似乎总是在 GC 期间发生。
由于崩溃发生在我尝试过的所有三个 JVM(OpenJDK 6、Oracle 1.6.0_25 和 1.7.0)中,并且每个都有两个 GC(并行收集器和 CMS),并且它发生在应用程序的同一区域,我我想,如果我能找到 GC 试图收集的内容,我可能会在我的代码中发现一些导致此崩溃的特殊性。
- 是否存在众所周知的对 GC 有问题的编码实践?
- 有哪些方法可用于诊断此问题?
- 我能否对在我的应用程序中触发此问题的位置做出任何有根据的猜测?
- 我可以使用哪些(GC 调整)参数来缩小问题范围?
- 有没有办法在堆转储中发现(可能)有问题的数据?
【问题讨论】:
-
添加了 JNI 标签,因为正如 Peter Lawrey 已经指出的那样,它显然是某些 JNI 库中的一个错误。
-
我很想看看是什么导致了崩溃。
-
我已经设法在没有 jni 的情况下使 Sun jvm 崩溃。
-
无论如何,它是 Eclipselink。我只知道。它必须去。它已经来了很长时间。我会自己拿出来。
-
@Casey 当然可以,但是与一些损坏的 JNI 函数相比,JVM 实现中出现错误的可能性有多大?
标签: java garbage-collection jvm segmentation-fault java-native-interface