美文网首页
Java的回收算法

Java的回收算法

作者: bangbang2 | 来源:发表于2020-07-23 09:11 被阅读0次

参考链接:https://www.imooc.com/article/79492

回收的都是内存区域,GC回收的是堆区和方法区的内存。Jvm的回收机制是stop-the-world

除了垃圾回收的线程外,其他线程保持停止,等垃圾回收完再恢复。例如:垃圾不能一边捡一边扔

标记-****清除算法:比如对象,被引用的对象被引用就+1****,count****为0****就被回收

复制算法:将原来内存区域分为两块,要清除时,就将一块区域的所有东西移到空白的内存区域,将原来的区域全部清空

标记整理算法:把有用的对象标记后整理在一块区域,然后将另一端区域的内存清空。相当于前二者的结合

复制算法>****标记-****整理算法>****标记-****清除算法

image.png image.png

Java中采用可达性分析
gc roots可以是:thread,class
1.JAVA虚拟机栈中的本地变量引用对象;
2.方法区中静态变量引用的对象;
3.方法区中常量引用的对象;
4.本地方法栈中JNI引用的对象
因为gc root选择的标准是:不被gc回收,方法区和栈的东西,肯定回收不了,gc root是当前存活的对象

image.png image.png image.png image.png image.png

基本意思:标记-清理,标记-整理适用于垃圾少的 copy算法适用垃圾多

检查是否为垃圾,用可达性分析

相关文章

网友评论

      本文标题:Java的回收算法

      本文链接:https://www.haomeiwen.com/subject/nzlclktx.html