元空间抛出 OutOfMemoryException
Metaspace throwing OutOfMemoryException
我最近从 Java7 迁移到 Java8。这导致了几个小时后我得到 OutOfMemoryException
的问题,因为 GC 无法释放任何内存。此外,Last Ditch Collection 无法将 Metaspace 的大小调整为更大的大小。
我很确定这是一个由反射加载大量 类 引起的问题。不幸的是,我找不到查看 类 正在加载的内容的方法。有没有办法从堆转储中提取该信息?
你可以通过
-verbose:class
到 JVM 以打印 类 正在加载的内容
您需要 Java Mission Control (jmc.exe) JDK 来记录您应用程序上的事件。这是你的方式:
1.从bin目录开始jmc.exe
2. 开始录音。 Select 如果您想要完整或限时录制。
3.转储录音。
4. 调试愉快。
具体来说,您可以转到内存选项卡 -> 分配 -> TLAB 分配
这给出了 类 加载和加载位置。
调试愉快。
我最近从 Java7 迁移到 Java8。这导致了几个小时后我得到 OutOfMemoryException
的问题,因为 GC 无法释放任何内存。此外,Last Ditch Collection 无法将 Metaspace 的大小调整为更大的大小。
我很确定这是一个由反射加载大量 类 引起的问题。不幸的是,我找不到查看 类 正在加载的内容的方法。有没有办法从堆转储中提取该信息?
你可以通过
-verbose:class
到 JVM 以打印 类 正在加载的内容
您需要 Java Mission Control (jmc.exe) JDK 来记录您应用程序上的事件。这是你的方式: 1.从bin目录开始jmc.exe 2. 开始录音。 Select 如果您想要完整或限时录制。 3.转储录音。 4. 调试愉快。
具体来说,您可以转到内存选项卡 -> 分配 -> TLAB 分配 这给出了 类 加载和加载位置。
调试愉快。