java垃圾回收机制
“垃圾回收”(Garbage Collection,GC)就是清理不再使用的对象,释放内存空间。与传统的编程语言(C/C++)不同,Java程序的内存分配和回收都是由JRE在后台自动进行的,不需要程序员控制。
垃圾回收有如下几个特点:
- 内存优化。垃圾回收机制的工作目标是回收无用对象并释放内存空间。事实上,除了释放没用的对象,垃圾回收也可以清除内存记录碎片。
- 动态回收。垃圾回收是一种动态存储管理技术,他自动识别不再被程序引用的对象,并回收。为了更快地让垃圾回收机制工作,可以通过将该对象的引用变量设置为null,以此暗示垃圾回收机制可以回收该对象。
- 回收的不确定性。垃圾回收一般都是在CPU空闲或者内存不足时自动进行的,而程序员无法精确控制垃圾回收的时间和顺序,虽然程序员可以通过调用对象的finalize()方法和sysytem.gc()等方法来建议系统进行垃圾回收,但这种调用仅仅是建议,依然不能精确控制垃圾回收的执行时间。
- 占用系统开销。JRE会使用后台线程来进行检测和控制垃圾回收,其潜在缺点是它的开销影响程序性能;JVM采用了不同的垃圾回收机制和回收算法以减少对系统的影响。