JVM基礎學習

qingyezhu發表於2015-03-08

 

public class TestJVM {

    // 執行時資料區【方法區、堆、程式計數器、虛擬機器棧、本地方法棧】
    private static int _1M = 1024 * 1024;

    public static void main(String[] args) {
    byte[] alloc1, alloc2, alloc3, alloc4, alloc5, alloc6, alloc7, alloc8;
    alloc1 = new byte[1 * _1M];
    alloc2 = new byte[2 * _1M];
    alloc3 = new byte[3 * _1M];
    alloc4 = new byte[4 * _1M];
    alloc5 = new byte[5 * _1M];
    alloc6 = new byte[6 * _1M];

    alloc2 = null;
    alloc7 = new byte[7 * _1M];

    }

    // 命令1:
    // -verbose:gc -Xms30M -Xmx30M -Xmn10M -XX:+PrintGCDetails
    // -XX:SurvivorRatio=8 -XX:+HeapDumpOnOutOfMemoryError

    // 命令2:
    // -verbose:gc -Xms30M -Xmx30M -XX:+PrintGCDetails
    // -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:+HeapDumpOnOutOfMemoryError

    // -verbose:gc 列印垃圾收集器的執行日誌
    // -Xms30M 最小堆的大小
    // -Xmx30M 最大堆的大小
    // -Xmn10M 年輕代大小
    // -XX:NewRatio=2 JVM堆中的新生代與老年代的大小比例為1:2
    // -XX:SurvivorRatio=8 設定Eden與Survivor的大小比例,預設8:1

    // 根據以上引數得知改程式的虛擬機器堆大小為30M,年輕代為10M,老年代為20M,
    // 其中年輕代中Eden=8M,From Survivor=To Survivor=1M

    // 備註:
    // 執行時記憶體與垃圾回收介紹:http://www.cnblogs.com/God-froest/p/jvm_1_3.html
    // 引數介紹:http://blog.csdn.net/shenzhen_liubin/article/details/7207236
    // OOM的樣例:http://blog.csdn.net/cutesource/article/details/8244250
}

 

 

參考資料:

《深入理解Java虛擬機器》筆記

JVM引數以及其含義

執行時記憶體以及垃圾收集器

相關文章