赞
踩
(1)什么是垃圾回收机制(Garbage Collection, 简称GC)
(2)JVM自动垃圾回收机制
指Java虚拟机在运行Java程序时,自动回收不再使用的对象所占用的内存空间的过程
Java程序中的对象,一旦不再被引用会被标记为垃圾对象,JVM会在适当的时候自动回收这些垃圾对象所占用的内存空间
优点
缺点
(3)引用计数法
public class Main {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.setB(b);
b.setA(a);
a = null;
b = null;
System.gc();
}
}
class A {
private B b;
public void setB(B b) {
this.b = b;
}
}
class B {
private A a;
public void setA(A a) {
this.a = a;
}
}
(4)可达性分析算法
通过一系列称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索走过的路径称为“引用链”,当一个对象到 GC Roots 没有任何的引用链相连时(从 GC Roots 到这个对象不可达)时,证明此对象不可用。
(5)什么是GC Root
(6)JVM中的GCRoots对象有哪几种
虚拟机栈(栈帧中的本地变量表)中引用的对象。
方法区中类静态属性引用的对象
方法区中常量引用的对象
本地方法栈中JNI(即一般说的Native方法)引用的对象。
(7)对象可回收,就一定会被回收吗?
(1)垃圾回收算法之标记-清除算法
(2)垃圾回收算法之标记-复制算法
优点
缺点
应用场景
标记复制算法一般用于新生代的垃圾回收,因此需要对新生代的对象进行分代管理
虚拟机多数采用这个算法,对新生代进行内存管理,因为多数这个新生代区域的存活对象数量少
国外有公司统计过多数业务,98%撑不过一次GC; 所以不用1:1比例分配新生代的空间
原因
(3)垃圾回收算法之标记-整理算法
(4)垃圾回收算法之分代收集算法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。