在C++语言中,若是须要动态分配一块内存,程序员须要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程很是灵活,可是却十分繁琐,程序员很容易因为疏忽而忘记释放内存,从而致使内存的泄露。Java语言对内存管理作了本身的优化,这就是垃圾回收机制。Java的几乎全部内存对象都是在堆内存上分配(基本数据类型除外),而后由GC(garbage collection)负责自动回收再也不使用的内存。可是有一个问题就是内存管理中出现垃圾回收滞后的现象,若是不及时的可以释放不用的内存,则会引发虚拟机内存泄露。因此,优化就体现的很明显:html
咱们须要知道GC在何时回收内存对象,什么样的内存对象会被GC认为是“再也不使用”的。 Java中对内存对象的访问,使用的是引用的方式。在Java代码中咱们维护一个内存对象的引用变量,经过这个引用变量的值,咱们能够访问到对应的内存地址中的内存对象空间。java垃圾回收器中,若是存在一个对象的引用,那么这些对象将占尽和耗尽内存,由于自动化的垃圾处理器没法证实这些对象的引用。局部变量不必清除,由于随着方法的结束,这些内容会被自动清除。java
http://blog.csdn.net/xinyuetonghua/article/details/7744769 程序员
http://www.cnblogs.com/hnrainll/archive/2013/11/06/3410042.html 优化