java的内存分配和垃圾回收都是JRE在后台进行的,JRE会负责回收JVM堆中那些不再使用的内存,这种机制称为垃圾回收机制(GC)。
JRE在后台提供一个线程来检测和控制,一般都是在CPU空闲或者是内存不足使自动回收,程序员无法精确控制垃圾回收的时间和顺序。
除了回收无用内存外,还可以清楚内存记录碎片,
程序员可以通过调用Runtime 的gc()或System.gc()来提醒系统进行垃圾回收。
垃圾回收算法: (1)标记-清除算法
将有用的对象标记,清除掉没标记的对象。会产生碎片化。
(2)复制算法
将有用的内存复制到另外一块区域,将原来的空间清理掉。用于回收新生代。
(3)标记-整理算法
将有用的对象标记并放到内存的一端,将区域外的部分清理掉。
(4)分代回收算法
将java堆分成新生代和老年代,永久代,不同的代使用不同的算法。
新生代 java 堆 (Eden大80%,Survivor0小10%,Survivor1小10%) Minor
老年代 java堆, Major(Full GC)
永久代 方法区。
参考连接:http://blog.csdn.net/mccand1234/article/details/52078645
内存泄漏:无用对象持续占有内存或无用对象内存得不到释放。