Java内存回收机制(第四讲)

堆内存的分代回收

现行的垃圾回收器用分代的方式来采用不同的回收设计。分代的基本思路是根据对象生存时间的长短,把堆内存分成三代:

>>Young(新生代)

>>OLd(老年代)

>>Permanent(永生代)

中文命名有点别扭,尽量采用英文名称

采用分代回收策略基于如下两点事实

>>绝大多数的对象不会被长时间引用,这些对象在其Young代就会被回收。

>>很老的对象(生存时间很长)和很新的对象(生存时间很短)之间很少存在相互引用的情况

Young代

对Young代采用复制算法只需遍历那些处于可达状态的对象,而且这些对象的数量较少,复制成本也不大,可以充分发挥复制算法的优点。


Young代由1个Eden区和2个Survivor区构成,同一时间的两个Survivor区(Survivor区中的对象都至少在Young代中经历过一次垃圾回收,所以这些对象在被转移到Old代之前会先保留在Survivor空间中),一个用来保存对象,另一个是空的;每次进行Young代垃圾回收的时候,就把Eden,From中的可达对象复制到To区域中,一些生存时间长的就复制到了老年代,接着清除Eden,From空间,最后原来的To空间变为From空间,原来的From空间变为To空间

因为Young代对象大部分很快进入不可达状态,因此回收频率高且回收速度快。

Old代

如果Young代中的对象经过熟悉垃圾回收依然没有被回收掉,即这个对象经过足够长的时间还处于可达状态,垃圾回收机制就会将这个对象转移到Old代中


Old代垃圾回收具有如下两个特征:

>>Old代垃圾回收执行频率无须太高,因为很少有对象会死掉

>>每次对Old代执行垃圾回收都需要更长的时间来完成

基于以上考虑,垃圾回收器通常会使用标记压缩法,避免复制Old代的大量对象。

Permanent代

Permanent代主要用于装载Class、方法等信息,默认为64MB,垃圾回收机制通常不会回收Permanent代中的对象。对于那些需要加载很多类的服务器程序,往往需要加大Permanent代的内存,否则可能会因为内存不足而导致程序终止。


与垃圾回收相关的附加选项:


下面两个选项用于设置Java虚拟机的内存大小

-Xms :设置java虚拟机堆内存的最大容量,如java -Xmx256m XxxClass

-Xms :设置java虚拟机堆内存的初始容量,如java -Xms128m XxxClass

下面选项都是关于java垃圾回收的附加选项

-xx:MinHeapFreeRatio =40 :设置java堆内存最小的空闲百分比,默认为40,如java -xx:MinHeapFreeRadio = 40 XxxClass

-xx:MaxHeapFreeRatio=70 :设置Java堆内存最大的空闲百分比,默认为70,如java -XX:MaxHeapFreeRatio =70 XxxClass

-xx:NewRatio=2 ;设置Yonng/Old内存的比例,如java -XX:NewRatio=1 XxxClass

-xx:NewSize=size:设置Yonng代内存的默认容量,如java -XX:Newsize=64m XxxClass

-xx:SurvivorRatio = 8;设置Yonng代中eden/survivor的比例,如java -xx:MaxNewSize=128m XxxClass

注意   当设置Young代的内存超过了-Xmx设置的大小时,Young设置的内存大小将不会起作用,JVM会自动将Young代内存设置为与-Xmx设置的大小相等。

-XX:PermSIze=size;设置Permnanent代内存的默认容量,如java --XX:PermSize=128m XxxClass

-XX:MaxPermSize=64m;设置Permanent代内存的最大容量,如java -XX:MaxPermSize=128m XxxClass


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值