一:垃圾回收机制的意义
java语言中一个显著的特点就是引入了java回收机制,是c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不在考虑内存管理。由于有个垃圾回收机制,java中的额对象不在有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存;
内存泄露:指该内存空间使用完毕后未回收,在不涉及复杂数据结构的一般情况下,java的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有是也将其称为“对象游离”;
二:垃圾回收机制的算法
java语言规范没有明确的说明JVM使用哪种垃圾回收算法,但是任何一种垃圾回收算法一般要做两件基本事情:(1)发现无用的信息对象;(2)回收将无用对象占用的内存空间。使该空间可被程序再次使用。
三:垃圾回收机制特征
1.垃圾回收机制的目标是回收无用对象的内存空间(记住:不是对象),这些内存空间是JVM堆内存的内存空间。垃圾回收只回收内存资源,对于那些物理资源,如数据库连接,Socket,I/O流等资源无能无能为力,我们要自己关闭回收。
2.为了加快垃圾回收机制回收那些无用对象所占的内存空间,可以讲对象的引用变量置于null(记住:置于null后,垃圾回收机制不会立即执行的)。
3.垃圾回收机制的潜在缺点它的开销会影响性能。Java虚拟机必须跟踪程序中有用的对象才可以确定哪些对象时无用的,并释放那些无用对象所占的内存空间。这个过程要处花费处理器时间的。
4.垃圾回收的不可预知性。可以通过Runtime对象的gc()方法或者System.gc()的方法来建议系统进行垃圾回收,但我们不能精确控制垃圾回收机制的运行。