Spark筆記-001-GC

我真的不懂Java...

GC急速入門

  • Java對象在內(nèi)存中的結(jié)構(gòu)

  • 如何確定對象可以被回收

    • java通過引用訪問堆中對象
    • 通過根節(jié)點(diǎn)可達(dá)性分析確定可以被回收。本地變量表引用的對象,方法區(qū)靜態(tài)屬性引用的對象,常量引用的對象,本地方法棧中JNI引用的對象,可以作為根節(jié)點(diǎn)。
  • 如何進(jìn)行垃圾回收

    • Mark-Sweep
    • Copying
    • Mark-Compact
    • 分代
  • 分代
    分為新生代,老年代,永久代。
    新對象分在Eden和Survivor1,如果空間不足,發(fā)生MinorGC,將Eden,Survivor1中存活的對象移動到Survivor2中,將Eden,Survivor1中對象清理掉。如果Survivor2中也不夠,那么放到老年代。接下來對象分配到Eden和Survivor2中,也就是說Survivor1和2角色互換了。

public class GCTest {
    public static void test(){![spark-jvm.png](https://upload-images.jianshu.io/upload_images/12606989-84091793beb64f11.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

        String s = new String("abc");
    }
    public static void main(String[] args){
        while(true){
            test();
        }
    }
}  
  • 看一眼


    YoungGen.png

    這里面Eden Space轉(zhuǎn)折處發(fā)生Miner GC, 存活對象被放入Survivor1,可以看出上次存活對象是放入Survivor2的,這兩個空間使用是交替的。

Spark內(nèi)存與JVM關(guān)系

寫不動了先盜個圖以后補(bǔ),困了。


spark-jvm.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容