美文网首页
Spark笔记-001-GC

Spark笔记-001-GC

作者: 叫我小明谢谢 | 来源:发表于2018-06-10 01:34 被阅读0次

    我真的不懂Java...

    GC急速入门

    • Java对象在内存中的结构

    • 如何确定对象可以被回收

      • java通过引用访问堆中对象
      • 通过根节点可达性分析确定可以被回收。本地变量表引用的对象,方法区静态属性引用的对象,常量引用的对象,本地方法栈中JNI引用的对象,可以作为根节点。
    • 如何进行垃圾回收

      • Mark-Sweep
      • Copying
      • Mark-Compact
      • 分代
    • 分代
      分为新生代,老年代,永久代。
      新对象分在Eden和Survivor1,如果空间不足,发生MinorGC,将Eden,Survivor1中存活的对象移动到Survivor2中,将Eden,Survivor1中对象清理掉。如果Survivor2中也不够,那么放到老年代。接下来对象分配到Eden和Survivor2中,也就是说Survivor1和2角色互换了。

    public class GCTest {
        public static void test(){![spark-jvm.png](https://img.haomeiwen.com/i12606989/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转折处发生Miner GC, 存活对象被放入Survivor1,可以看出上次存活对象是放入Survivor2的,这两个空间使用是交替的。

    Spark内存与JVM关系

    写不动了先盗个图以后补,困了。


    spark-jvm.png

    相关文章

      网友评论

          本文标题:Spark笔记-001-GC

          本文链接:https://www.haomeiwen.com/subject/ibaxeftx.html