一、垃圾收集器
在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。那么在Java中,什么样的对象会被认定为“垃圾”?那么当一些对象被确定为垃圾之后,采用什么样的策略(或者说按机回收算法)来进行回收(释放空间)?在目前的商业虚拟机中,有哪些典型的垃圾收集器?这些只做些了解就可,因为我们程序员不需要太深入了解,而且目前已近推出JDK8.0,相应的也有JVM8.0更新文档帮助大家深入了解JVM机制。
考虑到JVM中存活对象的生命周期具有两极化,大部分Java对象生命周期很短暂,有的对象生命周期很长,甚至与JVM周期一致,因此应该采用不同的垃圾手机策略,分代收集由此诞生。几乎目前所有的GC都是采用的分代收集算法执行垃圾回收,所以Java堆区如果进一步细分,可分为新生代 ( Young )、老年代 ( Old ),新生代 ( Young ) 又被划分为三