GC 和 Full GC 有什么区别?
2024-09-07 15:43:08
GC(或Minor GC):收集 生命周期短的区域(Young area)。
Full GC (或Major GC):收集生命周期短的区域(Young area)和生命周期比较长的区域(Old area)对整个堆进行垃圾收集。
他们的收集算法不同,所以使用的时间也不同。
Minor GC后,Eden是空的吗?
是的,Minor GC会把Eden中的所有活的对象都移到Survivor区域中,如果Survivor区中放不下,那么剩下的活的对象就被移到Old generation 中。
GC 效率也会比较高,我们要尽量减少 Full GC 的次数。 当显示调用System.gc() 时,gc does a full collection(both young generation and tenured generation).
显式调用system.gc()会触发full gc,对象在Eden出生每经历一次MInor GC后仍然存活,并且能被Survivor容纳,就会被移动到Survivor,
并设定年龄为1.以后在Survivor每"熬过"一次Minor GC,年龄就增加一岁,当年龄超过一定值就被移动到老年代,MaxTenuringThreshold用于设置年龄阈值,但是如果Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半,
年龄大于或等于该年龄的对象就可以直接进入老年代,无须等到MaxTenuringThreshold中要求的年龄。
大对象直接进入老年代,比如长数组或长字符串,-XX:PretenureSizeThreshold用于设置大于这个值直接在老年代分配。
最新文章
- 7 -- Spring的基本用法 -- 1...2
- 怎样把excel的数据导入到sqlserver2000数据库中
- JS插件之——ztree
- LevelDB(v1.3) 源码阅读之 Slice
- python 练习购物车小程序
- printf(";%*s\n";, 1, ";";); 使用";printf();"; 的格式化输出动态制定等宽度输出。
- Ogre1.8.1 Basic Tutorial 6 - The Ogre Startup Sequence
- Android中this.*与*.this还有*.class的区别是什么?
- ThinkPHP实现跨模块调用操作方法概述
- 前端开发必备之MDN文档
- BZOJ 2938: [Poi2000]病毒 [AC自动机 拓扑排序]
- GraphQL 入门介绍
- .Net Core在Centos7上初体验
- recovery 升级过程LED灯闪烁
- DQN(Deep Reiforcement Learning) 发展历程(五)
- 【应用安全】微软的安全开发生命周期(SDL)
- SVM入门——线性分类器的求解,核函数
- extjs6需要引入文件
- kNN算法笔记
- QQ空间发表日志的图片上传功能实现