JVM 回收原则

news/2025/1/26 15:05:36/

JVM 回收原则

HotSpot VM 的实现的 GC 分类:

  • Minor GC / Young GC : 新生代收集 : 对新生代 GC
  • Major GC / Old GC : 老年代收集 : 对老年代 GC
  • Mixed GC : 混合收集 : 对整个新生代和部分老年代 GC
  • Full GC : 整堆收集 : 收集整个 Java 堆和方法区

空间分配担保

  • 确保 Minor GC 前 , 老年代能放新生代所有对象的剩余空间
  • JDK 6 后的规则 : 只要老年代的连续空间 > 新生代对象总大小或历次晋升的平均大小,就会 Minor GC,否则就 Full GC

对象优先在新生代 Eden 区分配

  • 当 Eden 区没有空间时,就进行 Minor GC

大对象直接进入老年代

  • 大对象 : 要大量连续内存空间的对象(如:字符串、数组)
  • 避免大对象分配内存时 , 由于分配担保机制的复制 , 而降低效率

长期存活对象进入老年代 :

  • 当对象在 Eden 经过 Minor GC 后 , 能放入 Survivor (s0 或 s1),并将对象年龄 = 1
  • Survivor 每 MinorGC , 年龄 + 1 ,当年龄到 (默认 : -XX:MaxTenuringThreshold = 15 ),就进入老年代中

young gc stw :

  • GC , 都会 stop-the-world,只是时间长短
  • Serial、PartNew、Parallel Scavenge 都会挂起用户线程
  • CMS 和 G1 在并发标记时,不会挂起用户线程,但其它时候也会挂起用户线程,stop the world 相对较小

major gc/ full gc 区别 :

  • 一般区分 Minor GC/ Full GC
  • Full GC 会对年轻代、老年代、元空间、堆外内存回收

Full GC 原因:

  • 当年轻代晋升大小,比老年代剩余的空间大时,会触发 Full GC
  • 当老年代的空间使用率 > 某阈值时,会触发 Full GC
  • 当元空间不足时,会触发 Full GC
  • 调用 System.gc() , 会 Full GC

http://www.ppmy.cn/news/642894.html

相关文章

LeetCode 打卡day48--打家劫舍I, II, III

一个人的朝圣 — LeetCode打卡第48天 知识总结 Leetcode 198. 打家劫舍题目说明代码说明 Leetcode 213. 打家劫舍 II题目说明代码说明 Leetcode 337. 打家劫舍 III题目说明代码说明 知识总结 今天全是打家劫舍系列的题目, 还挺有意思的 Leetcode 198. 打家劫舍 题目链接 题目…

4个字节长度的int型 有符号数的 最大值怎么取?

//自己利用 而二进制序列定义 有符号 整数 最大值 const int MAX_INT 0x7fffffff; //4个字节 , 8个十六进制数字

linux命令:将一行数据根据指定符号转换成多行

将一行转换成多行cat stat7.txt | awk -F"*" ‘{print $4}’ | awk -F" " ‘{for(i1;i<NF;i) print $i}’

LOL是什么意思? - 已解决 - 搜狗问问

LOL是什么意思&#xff1f; - 已解决 - 搜狗问问 LOL是什么意思&#xff1f; - 已解决 - 搜狗问问 N A T S U 、 |分类&#xff1a;QQ工具栏 2009-05-04 LOL是什么意思&#xff1f; 满意答案 Shim Nyong 19级 2009-05-04 LOL&#xff08;也写作lol&#xff09;是常见的网络语言…

win2003修改密码后提示确认用户名及域无误_lol手游日服账号密码和邮箱修改详细教程...

第五步&#xff1a;再次输入密码确认&#xff1a;工具&#xff1a; 台式电脑一台 国内网络&#xff08;能用有点慢&#xff09; chrome浏览器&#xff08;其他浏览器估计也能用&#xff09; 第一步&#xff1a;打开拳头日服官网&#xff1a; https://oce.leagueoflegends.com/e…

Elasticsearch:分析器中的 character filter 介绍

Character filter&#xff0c;也即字符过滤器用于在将字符流传递给分词器&#xff08;tokenizer&#xff09;之前对其进行预处理。字符过滤器将原始文本作为字符流接收&#xff0c;并可以通过添加、删除或更改字符来转换流。 例如&#xff0c;字符过滤器可用于将印度-阿拉伯数字…

杂货边角(7):C++继承和多态的符号表角度解析

面向对象设计核心的思想便是抽象、封装、继承、多态和接口。继承机制是面向对象设计过程中动态性和模块性的来源&#xff0c;而多态性则是很多功能灵活性的来源。 0. C继承机制 面向对象设计核心是抽象的思维&#xff0c;但是”重复两次的代码就可能有坏味道“&#xff0c;如…

美团架构师深入讲解Java开发!java编程逻辑符号

所以&#xff0c;我认为在你选择之前不妨好好想想什么是Java&#xff1f;你适不适合从事这份工作&#xff1f; Java开发是近20多年来最热门的编程语言&#xff0c;就业市场确实比较大&#xff0c;入门的难度也比C和C要低&#xff0c;结合各方面来说&#xff0c;你选择Java是一…