JVM 通過 垃圾收集-GC 自動管理內(nèi)存堆中對象內(nèi)存的分配和回收。JVM 通常采用分代垃圾收集器,以便于整理內(nèi)存碎片。分代垃圾收集器就是基于對象不同生命周期,將堆分成不同的內(nèi)存區(qū)域,然后組合使用不同的垃圾收集算法,可簡單認(rèn)為分為兩部分組成:
Young Generation:年輕代,由Eden和兩個相等的Survivor空間組成,其中一個Survivor始終為空,用來復(fù)制Minor GC后在Eden和另一個Survivor存活的對象。
Old Generation:老年代,對象生命周期比較長。
內(nèi)存回收
內(nèi)存回收主要考慮兩個問題:
如何判斷對象可被回收,判斷策略:
Tracing GC,跟蹤收集,也叫可達(dá)性分析算法,其思想是從某些根對象引用(GC roots)出發(fā)總能找到一個到一組存活對象的引用鏈。
Reference counting,引用計數(shù)法,不能解決循環(huán)引用。
Escape analysis,逃