Inside JVM筆記
阿新 • • 發佈:2018-12-09
JVM包括三部分: 1. 類載入器系統。載入,連線(校驗,準備,解釋),初始化。類載入器:Bootstrap(/jre/lib) -> Extension(/jre/lib/ext) -> System (classpath) 2. 儲存區域。五部分:方法區,Heap,堆疊,PC暫存器,Native方法堆疊。 3. 執行引擎。直譯器,JIT,垃圾回收器
記憶體洩漏原因: 1. Open stream 2. Open connections 3. 大量靜態變數物件 4. 放入集合的資料,沒有覆蓋hashcode和equals
四種垃圾回收器:
- Serial, 單執行緒
- Parallel, 多執行緒
- Concurrent, CMS。多執行緒,mark,sweep
- G1,常用於大記憶體
Concurrent指的是GC迴圈,Parallel指的是GC演算法。
GC roots: 1. 本地變數 2. 活動執行緒 3. 靜態變數 4. JNI引用
從Java8開始,PermGeneration被Metaspace代替。MetaSpace不再是堆記憶體的一部分。 Heap=YongGen + OldGen = (Eden+S0+S1)+Tenured