关于GC

1.内存处理的判定指标:内存效率、内存利用率、内存整齐度;也是各种内存回收算法的指标

 

2.对象是否有存活必要的判定

2.1 引用计数。因为效率低、存在循环引用的问题(A引用B、B引用A 但是其他类都不引用A和B),已淘汰

2.2根搜索算法。从GCRoots根对象开始找引用的对象--->形成引用链,不在引用链上的不可用。GCRoots有

2.2.1虚拟机栈引用的对象

2.2.3方法区静态属性引用的对象

2.2.4方法区常量引用的对象

2.2.5方法栈中原生方法引用的对象

2.3 GC去哪儿找GCRoots?JIT编译器(因为运行时代码都是他生成的 它最熟悉)、GCHandler(被非托管对象引用的对象)、终结器队列

 

3.GC算法现在普遍使用分代收集法,不同的代使用不同的内存区域,不同的代使用下边不同的活法(年轻的跑来跑去 年老的原地不动)。对象按照大小被分配到不同的代,对象按照是否有存活的必要来决定年龄要不要继续长一岁,对象按照年龄在不同的代中移动

3.1 复制算法

3.2 标记清除法

3.3 标记整理法

 

对象在内存中漂泊、生生死死,侩子手是GC,DNA是代码,硬盘是睡觉的床,cpu是欲望,一台计算机一个世界,网线是时光机,而造物主就是写代码的人----程序员,,对象 你要不要来陪我吃饭?

posted @ 2022-11-05 16:49  那只狐狸  阅读(118)  评论(0编辑  收藏  举报