zoukankan      html  css  js  c++  java
  • Java元数据区域(MetaSpace)OOM

    元数据区

    元数据区取代了1.7版本及以前的永久代。元数据区和永久代本质上都是方法区的实现。方法区存放虚拟机加载的类信息,静态变量,常量等数据。

    JVM配置

    -XX:MetaspaceSize=10M 
    -XX:MaxMetaspaceSize=10M
    -XX:+HeapDumpOnOutOfMemoryError

    测试代码

    public class MetaSpaceOOM {
        public static void main(String[] args) {
            while (true) {
                Enhancer enhancer=new Enhancer();
                enhancer.setSuperclass(OOMObject.class);
                enhancer.setUseCache(false);
                enhancer.setCallback(new MethodInterceptor() {
                    @Override
                    public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
                        return methodProxy.invokeSuper(o,args);
                    }
                });
                enhancer.create();
            }
        }
    
        static class OOMObject {
    
        }
    }

    运行结果

    Dumping heap to java_pid2776.hprof ...
    Heap dump file created [4179143 bytes in 0.023 secs]
    Exception in thread "main" java.lang.OutOfMemoryError: Metaspace
        at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:538)
        at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:363)
        at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:582)
        at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:131)
        at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:319)
        at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:569)
        at org.springframework.cglib.proxy.Enhancer.create(Enhancer.java:384)
        at com.example.oom.MetaSpaceOOM.main(MetaSpaceOOM.java:21)

    GC LOG

    [GC (Allocation Failure) [PSYoungGen: 64512K->3311K(75264K)] 64512K->3327K(247296K), 0.0056889 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
    [GC (Allocation Failure) [PSYoungGen: 67823K->3272K(75264K)] 67839K->3296K(247296K), 0.0049203 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
    [GC (Metadata GC Threshold) [PSYoungGen: 39236K->3816K(75264K)] 39260K->3848K(247296K), 0.0040988 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
    [Full GC (Metadata GC Threshold) [PSYoungGen: 3816K->0K(75264K)] [ParOldGen: 32K->3694K(98816K)] 3848K->3694K(174080K), [Metaspace: 9913K->9913K(1058816K)], 0.0195453 secs] [Times: user=0.03 sys=0.00, real=0.02 secs] 
    [GC (Last ditch collection) [PSYoungGen: 0K->0K(102400K)] 3694K->3694K(201216K), 0.0006640 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
    [Full GC (Last ditch collection) [PSYoungGen: 0K->0K(102400K)] [ParOldGen: 3694K->2157K(188928K)] 3694K->2157K(291328K), [Metaspace: 9913K->9913K(1058816K)], 0.0355431 secs] [Times: user=0.14 sys=0.02, real=0.05 secs] 
    java.lang.OutOfMemoryError: Metaspace
  • 相关阅读:
    sklearn使用高斯核SVM显示支持向量
    决策树和随机森林分类
    线性回归曲线和过拟合判断
    wave数据集的回归曲线
    用KNN实现iris的4分类问题&测试精度
    pandas绘制矩阵散点图(scatter_matrix)的方法
    6种字符串数组的java排序 (String array sort)
    Spring中Quartz的配置
    jquery easyui datagrid js获取记录数 页数 当前页
    EasyUI的treegrid组件动态加载数据问题的解决办法
  • 原文地址:https://www.cnblogs.com/Brake/p/12885694.html
Copyright © 2011-2022 走看看