元空间抛出 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 分配 这给出了 类 加载和加载位置。

调试愉快。