It *_*day 34 memory-leaks permgen classloader java-8 metaspace
我有一个带有一些有趣行为的J2EE应用程序......堆似乎表现良好,随着时间的推移随着垃圾收集而增长和缩小.没有明显的整体长期堆扩展.然而,在我们遇到MaxMetaspace并遇到OOME之前,元空间一直稳定地以每小时20 Mb的速度增长.我尝试了并行和G1垃圾收集器(jdk1.8.0_40).
应用程序在执行期间没有重新部署,因此它似乎不是典型的类加载器泄漏.有没有人建议如何追查这个泄漏的来源?
java.lang.OutOfMemoryError:元空间的主要原因是:
如果要重新创建问题,请使用以下代码片段:
public class Metaspace {
static javassist.ClassPool cp = javassist.ClassPool.getDefault();
public static void main(String[] args) throws Exception {
for (int i = 0; ; i++) {
Class c = cp.makeClass("eu.plumbr.demo.Generated" + i).toClass();
}
}
}
Run Code Online (Sandbox Code Playgroud)
所有这些生成的类定义最终都会消耗Metaspace。
Maven回购中的 Javaassist 。
您可以在此处找到有关OOME的更多信息
| 归档时间: |
|
| 查看次数: |
11980 次 |
| 最近记录: |