description: 作者一聽就是個大佬,真希望知道他現在過得怎麽樣?作者一定很久都沒有上來看看了,真希望能看到他的境況;via:FreeCoder - YouTube
via: https://www.youtube.com/watch?v=ZFiYxdWKft8
#jvm/memory
- 5 个区域
- 栈
- 堆
- 本地方法栈(Native)
- 程序计数器
- 永久代,源数据空间,存储静态方法,常量,方法
- 其中,134 是线程私有;
-
via: https://www.youtube.com/watch?v=A20a0__mXvQ
#garbage_collection
- {{youtube-timestamp 44}} GC 判断的标准 GC Root
- 栈引用;
- 本地方法 (Native) 栈 直接/间接 引用;
- 方法区 Static 变量/常量 直接/间接 引用;
- {{youtube-timestamp 120}} 清理堆区的思路
- 标记——清理算法
description: 对准备清理的对象打上标记,然后清理;
- 产生内存碎片
- 标记——整理算法
description: 为了解决1的局限,删除之后,全部前移;
- 代价巨大
- 复制算法
description: 开辟两片堆区,删除的时候,从1复制到2,全部清理1;
- 需要两倍的内存空间
- {{youtube-timestamp 260}} 实际 GC 的算法
- description: 堆区划分为年轻代 (Young) 和老年代 (old),年轻代再次划分为 Survivor Space(S0,S1), Eden Space, Eden Space, Tenured Generation, Permanent Generation
- Eden:出生区(伊甸园);将满的时候出发 Young GC
- 采用复制算法,复制到 S0
- Eden 和 Survivor 比例:$8:1:1$
- S1 的存在是为了和 E区 交替使用
- E + S1 => S0
- E + S0 => S1
- Old:
- 每一次 GC,对象的年龄都会 +1,到了6岁的时候就会放在老年期
- 大的对象,在复制的时候占用资源比较多;
- Old GC 用时会伴随着 Young GC,也叫 Full GC,这个时候整个程序就会暂停(Stop the world)
- ![[javamadesoeasy_com_what-are-young-old-tenured.png]]
#jvm/memory
via: [JavaMadeSoEasy.com (JMSE): What are Young, Old (tenured) and Permanent Generation in JVM in java](https://www.javamadesoeasy.com/2016/10/what-are-young-old-tenured-and.html)
- {{youtube-timestamp 540}} 著名的垃圾回收器
- ParNew 年轻代
- CMS 老年代
- G1 垃圾收集器(New 最新使用)
-