我最近从Java7迁移到了Java8。这导致了一个问题,我在几小时后得到OutOfMemoryException
因为GC无法释放任何内存。此外,Last Ditch Collection不能将Metaspace调整为更大的尺寸。
我确信这是由反射加载的大量类引起的问题。不幸的是,我无法找到一种方法来查看正在加载的类。有没有办法从堆转储中提取该信息?
答案 0 :(得分:2)
你可以传递
delete
到JVM打印正在加载的类
答案 1 :(得分:1)
您需要JDK附带的Java Mission Control(jmc.exe)来记录应用程序上的事件。你是这样的: 1.从bin目录启动jmc.exe 2.开始录制。选择是否需要完整或限时录制。 3.转储录音。 4.快乐的调试。
具体来说,你可以去Memory选项卡 - >分配 - > TLAB的分配 这样就可以加载类以及加载它们的位置。
快乐的调试。