【JVM垃圾回收】哪些对象可以当作GC ROOT ?
哪些对象可以当作GC ROOT ?一、从虚拟机的内存分区的角度来以下对象可以作为GC Root:局部变量所引用的对象可以作为根对象。 例如 ArratList list = new ArrayList();方法参数所引用的对象也可以作为根对象。如果局部变量不再引用,那么就会被GC垃圾回收。例如:list = null;那么new ArrayList()就会被当作垃圾回收。总结:1.java虚拟机栈
·
哪些对象可以当作GC ROOT ?
一、从虚拟机的内存分区的角度来以下对象可以作为GC Root:
- 局部变量所引用的对象可以作为根对象。 例如 ArratList list = new ArrayList();
- 方法参数所引用的对象也可以作为根对象。
- 如果局部变量不再引用,那么就会被GC垃圾回收。
例如:list = null;那么new ArrayList()就会被当作垃圾回收。
总结:
-
1.java虚拟机栈中的引用的对象。
-
方法区中的类静态属性引用的对象。 (一般指被static修饰的对象,加载类的时候就加载到内存中。)
-
方法区中的常量引用的对象。
-
本地方法栈中的JNI(native方法)引用的对象
二、从程序运行的角度来说,一些在程序运行过程中始终保持存活,不死亡的对象可以作为GC Root,例如静态变量和常量所引用的对象等。
更多推荐
所有评论(0)