Exception in thread "main" java.lang.OutOfMemoryError: Java heap space5、方法区,是所有JVM共享的区域,存储了跟类的结构相关的信息:运行时常量池,类的成员变量,方法数据,以及成员方法和构造器方法的代码等 。方法区是在JVM启动时被创建的,可以通过-XX:MaxMetaspaceSize=10m设置方法区的大小 。下图就是JDK1.8中的内存结构:
可以看到,Metaspace作为方法区的实现,包含了Class、ClassLoader和常量池 。方法区也会有内存溢出,即元空间的内存溢出:
public class Demo1_5 extends ClassLoader{public static void main(String args[]) {try {Demo1_5 test = new Demo1_5();//加载10000个新的类for (int i=0; i<10000; i++) {//生成类的二进制字节码ClassWriter cw = new ClassWriter(0);//参数含义:版本号,public,类名,包名,父类,接口cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC, "Class"+i, null, "java/lang/object", null);//返回类的byte数组byte[] code = cw.toByteArray();//执行类的加载test.defineClass("Class"+i, code, 0, code.length);}}catch (Exception e) {e.printStackTrace();}}}上述案例演示了加载的类数量过多导致元空间内存溢出,以下是运行后结果:
Error occurred during initialization of VMMaxMetaspaceSize is too small.
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 别人的Word页码是花了一小时做好的 页码怎么设置
- 基坑周边多少范围内严禁堆放材料
- 简单三步教你win10防火墙端口设置 win10开放端口命令
- 苹果笔记本一键还原 mac还原系统设置
- 设置二级域名的方法 二级域名格式怎么注册
- 苹果6小圆点怎么设置出来 苹果6小圆点怎么设置透明
- 抖音背景图尺寸 抖音背景图尺寸怎么设置
- 讲解cad设置绘图区域 cad格式在哪里设置
- 设置起始页码为III怎么设置 设置页码从第三页开始设置页码
- 腾讯视频投屏默认怎么修改 腾讯视频怎么设置投屏