关注
(回帖有字数限制,删除了很多内容)知识储备:(详解还是要看JVM篇章)
一、垃圾回收大致分为三大类别
| | MinorGC | MajorGC | FullGC
二、可达性分析法的实现过程
1. 确定GCRoots。一般包含以下几个重要成分可能作为GCRoots
1. 虚拟机栈和本地方法栈中引用的对象
2. 堆中的字符串常量池和静态变量
3. 。。。
2. 从GCRoots开始遍历整个引用链,并将其标记为可存活。之后回收其他未被标记的即可
三、一个对象在堆的各个代中的流转过程(特殊情况除外:大对象等)
1. 对象创建之初一般在年轻代的Eden区
2. 当Eden满了之后触发MinorGC来将Eden和From区中可活对象放入To区。如果满了放入老年代。如果From中对象生存周期超过阀值则放入老年代
3. 然后调转From区和To区的定义
4. 如果遇到老年代空间满了就进行一次MajorGC。如果MajorGC之后还是不足就触发FullGC
问题一:根据不同的GC方式,扫描的区域也不同,也区别于不同的垃圾收集器。
+ Parallel:严格的年轻代和老年代,在回收的时候扫描固定区域
+ G1:针对分区算法,以及启动时配置的参数来跟踪并计算,在这个不超过最大时间间隔内回收哪些区的空间能做到最优。
问题二:一般对象创建之后就会出现在Eden区域,但是对于一些字符串常量、静态变量,则会出现在堆空间的字符串常量池中(字符串常量池是在JDK7之后才在堆中的)。对于一些Eden中存放不在的大对象可能会出现在老年代,此间可能会触发FullGC等情况
问题三:根据上述知识储备,不同的GC方式和不同的垃圾收集器,扫描的地方是不一样的,具体可以看知识储备。
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
2025-12-19 16:30
C++ 点赞 评论 收藏
分享
2025-12-15 18:28
广东理工学院 产品经理 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习的你做了哪些离谱的工作 #
3389次浏览 55人参与
# 工作压力大,你会干什么? #
3040次浏览 85人参与
# MiniMax求职进展汇总 #
1377次浏览 25人参与
# 参加哪些竞赛对找工作有帮助? #
3310次浏览 68人参与
# 邪修省钱套路 #
2398次浏览 92人参与
# 我的付费上班经历 #
5361次浏览 100人参与
# 找实习记录 #
7278次浏览 144人参与
# AI让你的思考变深了还是变浅了? #
1013次浏览 36人参与
# 如果不上班,你会去做什么 #
2229次浏览 84人参与
# 为了入行xx岗,我学了__ #
1845次浏览 33人参与
# 简历第一个项目做什么 #
1899次浏览 43人参与
# 你找工作的时候用AI吗? #
167430次浏览 868人参与
# 如何排解工作中的焦虑 #
257657次浏览 2379人参与
# 毕业论文进行时 #
24817次浏览 146人参与
# 大厂面试初体验 #
86591次浏览 398人参与
# 机械人的薪资开到多少,才适合去? #
159461次浏览 559人参与
# 你们的毕业论文什么进度了 #
1236003次浏览 9924人参与
# 你觉得面试是靠实力还是靠运气 #
27504次浏览 313人参与
# 毕业旅行去哪玩儿 #
21853次浏览 148人参与
# 硬件人秋招进展 #
265522次浏览 3971人参与
# 职场新人体验 #
160704次浏览 1148人参与
