java GC、新生代、老年代

1.Java GC、新生代、老年代
这里写图片描述
堆是虚拟机管理的最大一块内存空间,主要用于存放各种类的实例对象。
Java中,为了更好的的管理内存中的对象,包括内存的分配和回收。
堆(60M)=新生代(18M)+老年代(42M).
新生代(18M)=Eden(16M)+from Survivor+to Survivor.
老年代耗时是新生代的22倍。
堆的大小可以通过参数指定,虚拟机每次使用的时候会用Eden+一块survivor区域。即9/10的新生代空间。
(1)GC :强制立即回收垃圾,即释放内存(将对象所有引用赋值为Null,由GC自动回收)。 分为 Minor GC 和 Full GC(Major GC)
GC收集垃圾的主要区域是堆,Minor GC是发生在新生代的垃圾收集动作,采用复制算法,Full GC是发生在老年代的垃圾回收动作,采用标记-清除算法。
**新生代几乎是所有Java对象出生的地方,在Eden+一块survivor中出生,经过一次Minor GC后如果还存活,就被复制到另一块survivor中保存,并将年龄设为1,此后每经过一次Minor GC后年龄加1.当年龄到达某个值时就变为老年态。对于一些需要耗费大块连续内存区域时,直接进入老年态。新生代中的对象生命周期短,由GC来回收Eden+survivor中的内存。
**老年代标记-清除算法收集垃圾的时候会产生许多的内存碎片 ( 即不连续的内存空间 ),此后需要为较大的对象分配内存空间时,若无法找到足够的连续的内存空间,就会提前触发一次 GC 的收集动作。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值