JVM字节码指令,以及string字符串使用
2019-12-16 10:17:34 0 举报
JVM内存分配
作者其他创作
大纲/内容
存方法、对象
1、这种情况需要检查程序是否大量创建对象 ;2、增加Java虚拟机中Xms(初始堆大小)和 Xmx(最大堆大小)参数的大小 比如 : -Xms256M -Xmx1024M
Heap space(堆区域)
这种情况是创建对象太多,在回收之前,给虚拟机分配的堆内存已经用完了,导致堆内存不够使用
Java Stacks(Java栈)
出现OutOfMemoryError异常,怎么解决
Java heap space
代码片段、常量池、静态属性
方法区
JVM
增加Java虚拟机中XX:PermSize和XX:MaxPermSize参数的大小,其中XX:PermSize是初始永久保存区域大小,XX:MaxPermSize是最大永久保存区域大小-XX:PermSize=256M -XX:MaxPermSize=1024M
栈不存在爆仓的情况,一碗栈中存在的都是局部变量,对象地址
发生这种情况是程序中使用了大量的class或者jar包,导致Java虚拟机装载类的空间不够,与Permanent Generation space有关
栈
Java程序每一个线程都有独立的堆栈堆:主要存放Class实例(即new对象)主要是非静态属性(不是static的)static主要存放在方法区中,假如程序中占用大量的堆、方法区资源,这样出现内存溢出问题的区域就是 Permanent Generation space(方法区)、Heap space (堆区域)
堆和非堆区别堆:简单来说堆就是Java代码可以使用到的内存,给开发人员使用的,非堆:就是留给虚拟机自己用的,方法区,JVM内部处理需要的内存,每个类结构(运行时常量池、字段 、方法数据)方法,构造方法code都在堆中
因为栈不会导致出现OutOfMemoryError异常,暂时不用对栈进行处理
堆
PermGen space
OutOfMemoryError:属于JVM爆出来的异常,无法使用try...catch进行捕捉
no OutOfMemoryError
存放方法以及方法中的局部变量
Permanent Generation space(永久保存区域)
0 条评论
下一页