1. 程式人生 > >Inside JVM筆記

Inside JVM筆記

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

四種垃圾回收器

  1. Serial, 單執行緒
  2. Parallel, 多執行緒
  3. Concurrent, CMS。多執行緒,mark,sweep
  4. G1,常用於大記憶體

Concurrent指的是GC迴圈,Parallel指的是GC演算法。

GC roots: 1. 本地變數 2. 活動執行緒 3. 靜態變數 4. JNI引用

從Java8開始,PermGeneration被Metaspace代替。MetaSpace不再是堆記憶體的一部分。 Heap=YongGen + OldGen = (Eden+S0+S1)+Tenured