JVM垃圾回收

1、运行时区域

虚拟机栈、本地方法栈、程序计数器、

1.8后:本地内存(直接内存+元空间(方法区))+堆

1.8前:本地内存(直接内存)+堆(方法区+其他)

2、堆是垃圾回收的主要区域

判断垃圾

引用计数法:(不被使用)

有一个引用,对象头+1

弊端:循环引用,a引用b,b引用a,无法回收

可达性算法:(常用)

以GC ROOT为起点的引用链上的对象不被回收

3、GC ROOT

 

4、对象可回收,一定会被回收?

5、垃圾回收算法

标记-清除法:标记需回收对象,再进行清除。

会造成不连续的内存碎片。

复制法:内存分为两部分,一半存放对象,另一半存放回收后的存活对象。

内存可用大小减半,还需移动存活对象,效率低。

标记-整理法:标记、整理存活对象紧紧排列,再进行清除。

每次回收都需要整理,效率低。

分代收集算法:整合上述三种算法。

堆分为新生代(1)和老年代(2)

新生代分为Eden区(8)、s0区(1)、s1区(1)

新生代:young GC(minor GC)复制算法

老年代:old GC(full GC)标记-整理法 回收新生代+老年代,触发stop the world

发生full GC的时间叫做safe point

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值