我们的生产系统进入了完整 gc 的无限循环,并且内存在 2 分钟内从 8 gig 下降到 1 MB。
进行堆转储后,它告诉我有一个 java.lang.Object ([Ljava.lang.Object) 数组,其中数百万个 java.lang.String 对象具有相同的 String 占用 99% 的堆。
但它并没有告诉我哪个类引用了这个数组,以便我可以在代码中修复它。
我在 JDK 6 上使用 jmap 工具进行了堆转储,并使用了 JProfiler、NetBeans、SAP 内存分析器和 IBM 内存分析器,但这些都没有告诉我是什么导致了这个庞大的对象数组?...就像什么类正在引用它或包含它。
我是否必须使用不同的配置进行不同的转储才能获取该信息?...或任何其他可以帮助我找出导致此问题的罪魁祸首的东西...这将有很大帮助。