Java语⾔中⼀个显著的特点就是引⼊了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃⽽解。由于有个垃圾回收机制,Java中的对象不再有“作⽤域”的概念,只有对象的引⽤才有“作⽤域”。垃圾回收可以有效的防⽌内存泄露,有效的使⽤空闲的内存
堆中每个对象实例都有⼀个引⽤计数。当⼀个对象被创建时,且将该对象实例分配给⼀个变量,该变量计数设置为1。当任何其它变量被赋值为这个对象的引⽤时,计数加1(a = b,则b引⽤的对象实例的计数器+1),但当⼀个对象实例的某个引⽤超过了⽣命周期或者被设置为⼀个新值时,对象实例的引⽤计数器减1。任何引⽤计数器为0的对象实例可以被当作垃圾收集。当⼀个对象实例被垃圾收集时,它引⽤的任何对象实例的引⽤计数器减1