相对于c语言的这种由开发人员显式的分配内存、释放内存,如果处理不当往往会造成内存泄露的问题。java的垃圾回收机制监视java程序的运行,自动释放不再使用的对象的内存。java使用软指针(指向对象引用的指针)来跟踪对象的所有引用。并使用一个对象表将软指针映射为对象的引用。垃圾收集器以单独的线程在后台运行,通过软指针依次检查每个对象。
垃圾收集器会不定时的检查对象的各个引用,如果一个对象没有任何的引用指向它,那个它可以被回收。
我们可以主动调用静态的gc()方法来运行垃圾收集器,但是并不能保证这样就可以立即回收指定的对象。
因此我们不应该试图去假设垃圾回收发生的时间,这是未知的。
一个对象所占用的内存符合垃圾回收的标准是,没有任何引用指向该对象。
Object a=new Object();
Object b=a;
a=null;
b=null;
如上面的对象,它开始有两个引用a和b指向它,当最后没有引用指向它时(a=null,b=null),它便符合垃圾回收标准。