Java垃圾回收过程

自从Java8发布以来,Hotspot JVM堆区就再也没有了Permanent Generation的传说,取而代之的是直接内存Metaspace(元空间)。但是,目前对于Java GC的描述文献大多还基于JDK7,前些天看到Oracle官网对于JDK7 垃圾回收的文章,觉得描述非常清晰明了,于是转载过来,本来想翻译来着,想了想,还是不要画蛇添足,就这样吧。

Now that you understand why the heap is separated into different generations, it is time to look at how exactly these spaces interact. The pictures that follow walks through the object allocation and aging process in the JVM.

First, any new objects are allocated to the Eden space. Both survivor spaces start out empty.

Screen_Shot_2017_07_25_at_11_00_24_PM

When the eden space fills up, a minor garbage collection is triggered.
Screen_Shot_2017_07_25_at_11_00_42_PM

Referenced objects are moved to the first survivor space. Unreferenced objects are deleted when the eden space is cleared.
Screen_Shot_2017_07_25_at_11_00_54_PM

At the next minor GC, the same thing happens for the Eden space. Unreferenced objects are deleted and referenced objects are moved to a survivor space. However, in this case, they are moved to the second survivor space (S1). In addition, objects from the last minor GC on the first survivor space (S0) have their age incremented and get moved to S1. Once all surviving objects have been moved to S1, both S0 and eden are cleared. Notice we now have differently aged object in the survivor space.
Screen_Shot_2017_07_25_at_11_18_19_PM

At the next minor GC, the same process repeats. However this time the survivor spaces switch. Referenced objects are moved to S0. Surviving objects are aged. Eden and S1 are cleared.
Screen_Shot_2017_07_25_at_11_01_14_PM

This slide demonstrates promotion. After a minor GC, when aged objects reach a certain age threshold (8 in this example) they are promoted from young generation to old generation.
Screen_Shot_2017_07_25_at_11_01_25_PM

As minor GCs continue to occure objects will continue to be promoted to the old generation space.
Screen_Shot_2017_07_25_at_11_01_34_PM

So that pretty much covers the entire process with the young generation. Eventually, a major GC will be performed on the old generation which cleans up and compacts that space.
Screen_Shot_2017_07_25_at_11_02_20_PM

以上内容均来自http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值