一、什么是垃圾
内存中不再使用的区域是垃圾
二、要进行垃圾回收,如何判断一个对象是否可以被回收?
引用计数法很难解决对象间循环引用的问题
枚举根节点的可达性分析通过列举" GC Roots "对象进行可达性分析,以一系列名为" GC Roots "的对象为起点,从" GC Roots "对象开始向下检索,参照形成的路径如果对象没有对“GC根”(GC root )对象的参照,且没有形成参照链,则对象将等待GC回收。
三、哪些对象可以作为 GC Roots 的对象:
1、虚拟机堆栈(Java堆栈帧中的局部变量区域,也称为局部变量表) )中引用的对象。
2、方法区域中类静态属性引用的对象。
3、方法区域内的常量引用的对象。
4 .本地方法堆栈中的JNI (朴素方法)引用的对象。
publicclassgcrootdemo {私有字节[ ] bytearray=new byte [ 100 * 1024 * 1024 ]; 私密静态gcroot演示gc2; 私有身份验证代码3=newgcrootdemo (; publicstaticvoidm1({ gcrootdemogc1=newgcrootdemo ); System.gc (; System.out.println; } publicstaticvoidmain (字符串[ ] args ) { m1 ); }说明:
gc1:是虚拟机堆栈中的局部变量
gc2:是方法区域中类的静态变量
gc3:是方法区域中的常量
均为GC Roots 的对象。