Metaspace抛出OutOfMemoryException

时间:2016-01-29 14:50:02

标签: java jvm migration out-of-memory

我最近从Java7迁移到了Java8。这导致了一个问题,我在几小时后得到OutOfMemoryException因为GC无法释放任何内存。此外,Last Ditch Collection不能将Metaspace调整为更大的尺寸。

我确信这是由反射加载的大量类引起的问题。不幸的是,我无法找到一种方法来查看正在加载的类。有没有办法从堆转储中提取该信息?

2 个答案:

答案 0 :(得分:2)

你可以传递

delete

到JVM打印正在加载的类

答案 1 :(得分:1)

您需要JDK附带的Java Mission Control(jmc.exe)来记录应用程序上的事件。你是这样的: 1.从bin目录启动jmc.exe 2.开始录制。选择是否需要完整或限时录制。 3.转储录音。 4.快乐的调试。

具体来说,你可以去Memory选项卡 - >分配 - > TLAB的分配 这样就可以加载类以及加载它们的位置。

快乐的调试。