在程序运行的过程中, 堆上开辟的内存空间在不再被使用的时候, 这些内存块对程来讲就是垃圾. 产生了垃圾, 自然就需要清理这些垃圾, 更为重要的是需要把这些垃圾占用的内存资源回收, 加以再利用, 从而节省资源, 提高系统性能. 在 C,C++ 等语言中由程序员负责回收无用内存, 这是一项复杂又艰巨的任务. 而在 Java 语言中, 提供了垃圾回收 ( Garbage Collection,GC 机制. 垃圾回收机制消除了程序员回收无用内存空间的任, Java 虚拟机提供了一种系统线程(即垃圾收集器线程) 来跟踪存储空间的分配情况
并 Java 虚拟机的空闲时间, 检查和释放那些可以被释放的存储空间. 垃圾回收器在 Java 运行过程中自动启用.
注意
(1)在 Java 中, 垃级回收是一个自动的系统行为, 程序员不能控制垃圾回收的功能行为. 比如垃圾回收什么时候开始, 什么时候结来, 还有到底哪些资源需要回收等, 都程序员不能控制的
(2)有一些跟垃圾回收相关的方法, 比如 System.gc()记佳一点, 调用这些方法
仅是在道知垃级回收程, 至子垃级回收程序不运行, 什么时候运行, 都是无法控制
(3)程序员可以通过设置对象为 null(后面会讲到)来标识某个对象不再被需要了, 这只可以被回收, 并不是马上回收
来源: http://www.jianshu.com/p/e8a288817d61