Java GC 垃圾收集
来源:互联网 发布:java工作描述怎么写 编辑:程序博客网 时间:2024/05/23 12:38
Java堆,分配对象实例所在空间,是GC的主要对象。分为
新生代又划分成
新生代要如此划分是因为新生代使用的GC算法是复制收集算法。这种算法效率较高,而GC主要是发生在对象经常消亡的新生代,因此新生代适合使用这种复制收集算法。由于有一个假设:在一次新生代的GC(Minor GC)后大部分的对象占用的内存都会被回收,因此留存的放置GC后仍然活的对象的空间就比较小了。这个留存的空间就是Survivor space:From Survivor或To Survivor。这两个Survivor空间是一样大小的。例如,新生代大小是10M(Xmn10M),那么缺省情况下(-XX:SurvivorRatio=8),Eden Space 是8M,From和To都是1M。
在new一个对象时,先在Eden Space上分配,如果Eden Space空间不够就要做一次Minor GC。Minor GC后,要把Eden和From中仍然活着的对象们复制到To空间中去。如果To空间不能容纳Minor GC后活着的某个对象,那么该对象就被promote到老年代空间。从Eden空间被复制到To空间的对象就有了age=1。此age=1的对象如果在下一次的Minor GC后仍然存活,它还会被复制到另一个Survivor空间(如果认为From和To是固定的,就是又从To回到了From空间),而它的age=2。如此反复,如果age大于某个阈值(-XX:MaxTenuringThreshold=n),那个该对象就也可以promote到老年代了。
如果Survivor空间中相同age(例如,age=5)对象的总和大于等于Survivor空间的一半,那么age>=5的对象在下一次Minor GC后就可以直接promote到老年代,而不用等到age增长到阈值。
在做Minor GC时,只对新生代做回收,不会回收老年代。即使老年代的对象无人索引也将仍然存活,直到下一次Full GC。
0 0
- Java垃圾收集GC()
- Java GC 垃圾收集
- java gc垃圾收集算法
- Java垃圾收集器(GC)
- Java的垃圾收集器(GC)
- JAVA GC垃圾收集器的分析
- 【转载】Java GC(垃圾收集)
- JAVA GC垃圾收集器的分析
- JAVA GC垃圾收集器的分析
- java垃圾收集器(GC)浅析
- Java面试之GC(垃圾收集器)
- java面试之GC(垃圾收集器)
- java垃圾收集机制(GC)
- 2. Java中的垃圾收集 - GC参考手册
- Java面试之GC(垃圾收集器)
- JVM:Java GC算法 垃圾收集器
- Java GC算法以及垃圾收集算法
- 垃圾收集器GC与Java编程
- iOS-OC-内购In-App Purchases
- Swift - 如何让UIView,UILabel和UIImageView之间类型互相转化
- maven工程spring3.x pom文件依赖配置
- maven项目导到eclipse不识别为java项目且认不到mave Dependencies
- Pods-frameworks.sh: No such file or directory、Pods-resources.sh: No such file or directory
- Java GC 垃圾收集
- python 添加opencv 接口
- 排序算法总结---java面试
- USB调试实现
- JAVA自学之每日一题(六)
- springmvc导入导出
- 虚幻4蓝图使用小技巧(更新)
- poj 1840 哈希+离散化
- Codeforces Round #361 (Div. 2) -- A. Mike and Cellphone (思路题目)