JVM内存模型及相关启动参数设置
在jvm中堆空间划分为三个代:
年轻代(Young Generation)、
年老代(Old Generation)和
永久代(Permanent Generation)。
年轻代和年老代是存储动态产生的对象,又称为“堆内存”。
永久代主要是存储的是java的类信息,包括解析得到的方法、属性、字段等等,又称为“非堆内存”。
永久代基本不参与垃圾回收。
年轻代又分成3个部分:
一个eden区和两个相同的survior区。
刚开始创建的对象都是放置在eden区的。分成这样3个部分,主要是为了生命周期短的对象尽量留在年轻带。
当eden区申请不到空间的时候,进行minorGC,把存活的对象拷贝到survior。
年老代主要存放生命周期比较长的对象,比如缓存对象。
jvm内存回收过程描述如下:
1、对象在Eden区完成内存分配
2、当Eden区满了,再创建对象,会因为申请不到空间,触发minorGC,进行young(eden+1survivor)区的垃圾回收
3、minorGC时,Eden不能被回收的对象被放入到空的survivor(Eden肯定会被清空),另一个survivor里不能被GC回收的对象也会被放入这个survivor,始终保证一个survivor是空的
4、当做第3步的时候,如果发现survivor满了,则这些对象被copy到old区,或者survivor并没有满,但是有些对象已经足够Old,也被放入Old区 XX:MaxTenuringThreshold
5、当Old区被放满的之后,进行fullGC
不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的。
总结java的内存模型,要解决两个主要的问题:可见性和有序性。
。。。
Xms Xmx PermSize MaxPermSize区别
举例说明含义:
-Xms128m
表示JVM Heap(堆内存)最小尺寸128MB,初始分配
-Xmx512m
表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。
说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉。
PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。
-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允许分配尺寸,按需分配,过小会导致:java.lang.OutOfMemoryError: PermGen space
MaxPermSize缺省值和-server -client选项相关。
-server选项下默认MaxPermSize为64m
-client选项下默认MaxPermSize为32m
xms/xmx:定义YOUNG+OLD段的总尺寸,ms为JVM启动时YOUNG+OLD的内存大小;mx为最大可占用的YOUNG+OLD内存大小。
在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。
NewSize/MaxNewSize:定义YOUNG段的尺寸,NewSize为JVM启动时YOUNG的内存大小;MaxNewSize为最大可占用的YOUNG内存大小。
在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。
PermSize/MaxPermSize:定义Perm段的尺寸,PermSize为JVM启动时Perm的内存大小;MaxPermSize为最大可占用的Perm内存大小。
在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。
SurvivorRatio:设置YOUNG代中Survivor空间和Eden空间的比例
内存监控的方法:
jmap -heap pid:查看java 堆(heap)使用情况
参考:
JVM内存结构分析 http://blog.csdn.net/mahongming/article/details/5992083
JVM垃圾回收 http://www.cnblogs.com/welbeckxu/archive/2012/02/29/2373704.html
JVM的内存模型之eden区 转载 http://www.blogjava.net/ytl-zlq/archive/2012/03/01/371093.html
JVM虚拟机选项:Xms Xmx PermSize MaxPermSize区别 http://hi.baidu.com/manbsn/blog/item/5e6cd32648d17f1b918f9dff.html
浙公网安备 33010602011771号