深入JVM 原理(七)老年代、永久代和元空间

目录

深入JVM 原理(一)Java内存模型:https://blog.csdn.net/qq_39827935/article/details/81285009
深入JVM原理(二)Java对象访问模式:https://blog.csdn.net/qq_39827935/article/details/81285038
深入JVM原理(三)JVM 垃圾收集:https://blog.csdn.net/qq_39827935/article/details/81285059
深入JVM原理(四)JVM垃圾回收流程:https://blog.csdn.net/qq_39827935/article/details/81285084
深入JVM原理(五)Java堆内存调整参数(调优关键):https://blog.csdn.net/qq_39827935/article/details/81285099
深入JVM原理(六)年轻代:https://blog.csdn.net/qq_39827935/article/details/81285115
深入JVM原理(七)老年代、永久代和元空间:https://blog.csdn.net/qq_39827935/article/details/81285133
深入JVM原理(八)JVM垃圾回收策略:https://blog.csdn.net/qq_39827935/article/details/81285156
深入JVM原理(九)JVM垃圾回收策略参数配置:https://blog.csdn.net/qq_39827935/article/details/81285175
深入JVM原理(十)G1收集器:https://blog.csdn.net/qq_39827935/article/details/81285207
深入JVM原理(十一)Java引用类型:https://blog.csdn.net/qq_39827935/article/details/81285227

老年代

老年代主要接收由年轻代发送过来的对象,一般情况下,经过了数次Minor GC 之后还会保存下来的对象才会进入到老年代。如果要保存的对象超过了伊甸园区的大小,此对象也将直接保存在老年代之中,当老年代内存不足时,将引发 “major GC”,即,“Full GC”。

在老年代里面会采用两种算法结合的模式实现GC的处理:整理-压缩。

这里写图片描述

在回收清除的过程之中,发现所有在老年代中被回收的对象并没有进行空间的整理,所以老年代最头疼的就是碎片化问题。

这里写图片描述

以后再进行老年代存储的时候尽可能保存长期会被使用的对象,并且不会被轻易回收的大对象。

这里写图片描述

范例:设置老年代参数(java -Xms2G -Xmx2G -XX:+PrintGCDetails -XX:PretenureSizeThreshold=512k -XX:NewRatio=2 TestDemo) 
此时,如果超过512k的对象将直接被保存在老年代之中,也就是说。这个对象不会触发 Minor GC。(因为不在年轻代进行保存)

永久代(JDK 1.8 后消失)

虽然JAVA 的版本是 JDK 1.8 ,但是 JavaEE的版本还是JDK1.7,也就是说,在JavaEE里面必须对永久代进行设置。永久代也是在堆内存中保存的,但是永久代不会被回收,例如:intern()方法产生的对象不会被回收。如果操作不当,导致永久代中的数据量过大,那么这个时候程序会报出 OOM 问题。 
一般情况下不会出现这种问题; 
这里写图片描述

-XX:MaxPermSize: 设置永久代的最大值 
-XX:PremSize:设置永久代的初始大小

范例:设置永久代参数(java -XX:MaxPermSize10M TestDemo) 
在JDK 1.8之中设置永久代会报出错误

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize10M; support was removed in 8.0

元空间

元空间是JDK 1.8 之后才有的,功能和永久代类似。唯一到的区别是,永久代使用的是JVM的堆内存空间,而元空间使用的是物理内存,直接受到本机的物理内存限制。 
这里写图片描述

范例“设置一些参数,让元空间出错(java -XX:MaxMetaspaceSize=1m XX:MetaspaceSize=1m TestDemo) 
此时会报出“OutOfMemoryError:Metaspace”,元空间内存不足。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值