JVM学习--各数据区内存溢出异常测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011676300/article/details/83039937

JVM学习–总索引

JVM学习–各数据区内存溢出异常测试

基本参数介绍

  • -Xss:栈内存最大值

  • -Xms:堆内存初始化值,当内存达到该值时虚拟机会进行垃圾回收操作。单位为k(K)或者m(M),必须为1M或者1024K的倍数例子:-Xms10m

  • -Xmx:堆内存最大值,当内存达到该值时会抛出OutofMemoryError异常。单位为k(K)或者m(M),必须为1M或者1024K的倍数例子:-Xmx10m

  • -Xmn:堆内存的年轻代大小,堆内存最大值和年轻代的差值就是老年代的大小。单位为k(K)或者m(M),必须为1M或者1024K的倍数例子:-Xmn10m

  • -XX:MetaspaceSize=N
    这个参数是初始化的Metaspace大小,该值越大触发Metaspace GC的时机就越晚。随着GC的到来,虚拟机会根据实际情况调控Metaspace的大小,可能增加上线也可能降低。在默认情况下,这个值大小根据不同的平台在12M到20M浮动。使用java -XX:+PrintFlagsInitial命令查看本机的初始化参数,-XX:Metaspacesize为21810376B(大约20.8M)。

  • -XX:MaxMetaspaceSize=N
    这个参数用于限制Metaspace增长的上限,防止因为某些情况导致Metaspace无限的使用本地内存,影响到其他程序。在本机上该参数的默认值为4294967295B(大约4096MB)。

  • -XX:MinMetaspaceFreeRatio=N
    当进行过Metaspace GC之后,会计算当前Metaspace的空闲空间比,如果空闲比小于这个参数,那么虚拟机将增长Metaspace的大小。在本机该参数的默认值为40,也就是40%。设置该参数可以控制Metaspace的增长的速度,太小的值会导致Metaspace增长的缓慢,Metaspace的使用逐渐趋于饱和,可能会影响之后类的加载。而太大的值会导致Metaspace增长的过快,浪费内存。

  • -XX:MaxMetasaceFreeRatio=N
    当进行过Metaspace GC之后, 会计算当前Metaspace的空闲空间比,如果空闲比大于这个参数,那么虚拟机会释放Metaspace的部分空间。在本机该参数的默认值为70,也就是70%。

  • -XX:MaxMetaspaceExpansion=N
    Metaspace增长时的最大幅度。在本机上该参数的默认值为5452592B(大约为5MB)。

  • -XX:MinMetaspaceExpansion=N
    Metaspace增长时的最小幅度。在本机上该参数的默认值为340784B(大约330KB为)。

  • -verbose:gc:在启动参数中加上 -verbose:gc 当发生gc时,可以打印出gc相关的信息.

  • -Xlog:gc*:打印出GC的详细信息。 -Xlog介绍

堆内存异常测试 OutOfMemoryError

public class HeapOOM {

    public static void main(String[] args) {


		//使用list保持对对象的回收,防止Major gc(老年代回收)时回收对象。
        List<HeapOOM>  list = new ArrayList<HeapOOM>();
        int  count = 0;

        while (true){
            try {
                HeapOOM heapOOM = new HeapOOM();
                list.add(heapOOM);
                count++;
            } catch (Exception ex) {
                System.out.println("创建了"+count + "个对象");
            }

        }
    }
}

vm配置
堆初始值20M,最大值10M,新生代10M,新生代和Survivor比例8/1

-Xms20M -Xmx20M -Xmn10M -XX:SurvivorRatio=8 -Xlog:gc*

输出

/home/lgj/java/jdk-9.0.1/bin/java -Xms20M -Xmx20M -Xmn10M -XX:SurvivorRatio=8 -Xlog:gc* -javaagent:/home/lgj/java/idea-IU-181.5281.24/lib/idea_rt.jar=36717:/home/lgj/java/idea-IU-181.5281.24/bin -Dfile.encoding=UTF-8 -classpath /home/lgj/aProject/JavaBase/target/classes jvm.HeapOOM
[0.012s][info][gc,heap] Heap region size: 1M
[0.014s][info][gc     ] Using G1
[0.014s][info][gc,heap,coops] Heap address: 0x00000000fec00000, size: 20 MB, Compressed Oops mode: 32-bit
[0.296s][info][gc,start     ] GC(0) Pause Young (G1 Evacuation Pause)
[0.296s][info][gc,task      ] GC(0) Using 4 workers of 4 for evacuation
[0.363s][info][gc           ] GC(0) To-space exhausted
[0.363s][info][gc,phases    ] GC(0)   Pre Evacuate Collection Set: 0.0ms
[0.363s][info][gc,phases    ] GC(0)   Evacuate Collection Set: 58.7ms
[0.363s][info][gc,phases    ] GC(0)   Post Evacuate Collection Set: 8.5ms
[0.363s][info][gc,phases    ] GC(0)   Other: 0.1ms
[0.363s][info][gc,heap      ] GC(0) Eden regions: 10->0(8)
[0.363s][info][gc,heap      ] GC(0) Survivor regions: 0->2(2)
[0.363s][info][gc,heap      ] GC(0) Old regions: 0->9
[0.363s][info][gc,heap      ] GC(0) Humongous regions: 7->7
[0.363s][info][gc,metaspace ] GC(0) Metaspace: 5257K->5257K(1056768K)
[0.363s][info][gc           ] GC(0) Pause Young (G1 Evacuation Pause) 17M->18M(20M) 67.429ms
[0.363s][info][gc,cpu       ] GC(0) User=0.12s Sys=0.01s Real=0.07s
[0.372s][info][gc,start     ] GC(1) Pause Initial Mark (G1 Evacuation Pause)
[0.372s][info][gc,task      ] GC(1) Using 4 workers of 4 for evacuation
[0.421s][info][gc           ] GC(1) To-space exhausted
[0.421s][info][gc,phases    ] GC(1)   Pre Evacuate Collection Set: 0.0ms
[0.421s][info][gc,phases    ] GC(1)   Evacuate Collection Set: 33.0ms
[0.421s][info][gc,phases    ] GC(1)   Post Evacuate Collection Set: 15.6ms
[0.421s][info][gc,phases    ] GC(1)   Other: 0.1ms
[0.421s][info][gc,heap      ] GC(1) Eden regions: 2->0(10)
[0.421s][info][gc,heap      ] GC(1) Survivor regions: 2->0(2)
[0.421s][info][gc,heap      ] GC(1) Old regions: 9->13
[0.421s][info][gc,heap      ] GC(1) Humongous regions: 7->7
[0.421s][info][gc,metaspace ] GC(1) Metaspace: 5257K->5257K(1056768K)
[0.421s][info][gc           ] GC(1) Pause Initial Mark (G1 Evacuation Pause) 20M->20M(20M) 48.831ms
[0.421s][info][gc,cpu       ] GC(1) User=0.08s Sys=0.00s Real=0.05s
[0.421s][info][gc           ] GC(2) Concurrent Cycle
[0.421s][info][gc,marking   ] GC(2) Concurrent Clear Claimed Marks
[0.421s][info][gc,marking   ] GC(2) Concurrent Clear Claimed Marks 0.008ms
[0.421s][info][gc,marking   ] GC(2) Concurrent Scan Root Regions
[0.421s][info][gc,marking   ] GC(2) Concurrent Scan Root Regions 0.005ms
[0.421s][info][gc,marking   ] GC(2) Concurrent Mark (0.421s)
[0.421s][info][gc,marking   ] GC(2) Concurrent Mark From Roots
[0.421s][info][gc,task      ] GC(2) Using 1 workers of 1 for marking
[0.421s][info][gc,start     ] GC(3) Pause Young (G1 Evacuation Pause)
[0.421s][info][gc,task      ] GC(3) Using 4 workers of 4 for evacuation
[0.435s][info][gc,phases    ] GC(3)   Pre Evacuate Collection Set: 0.0ms
[0.435s][info][gc,phases    ] GC(3)   Evacuate Collection Set: 13.9ms
[0.435s][info][gc,phases    ] GC(3)   Post Evacuate Collection Set: 0.0ms
[0.435s][info][gc,phases    ] GC(3)   Other: 0.1ms
[0.435s][info][gc,heap      ] GC(3) Eden regions: 0->0(10)
[0.435s][info][gc,heap      ] GC(3) Survivor regions: 0->0(2)
[0.435s][info][gc,heap      ] GC(3) Old regions: 13->13
[0.435s][info][gc,heap      ] GC(3) Humongous regions: 7->7
[0.435s][info][gc,metaspace ] GC(3) Metaspace: 5257K->5257K(1056768K)
[0.435s][info][gc           ] GC(3) Pause Young (G1 Evacuation Pause) 20M->20M(20M) 14.041ms
[0.435s][info][gc,cpu       ] GC(3) User=0.02s Sys=0.00s Real=0.01s
[0.436s][info][gc,start     ] GC(4) Pause Full (Allocation Failure)
[0.436s][info][gc,phases,start] GC(4) Phase 1: Mark live objects
[0.451s][info][gc,stringtable ] GC(4) Cleaned string and symbol table, strings: 3643 processed, 145 removed, symbols: 23974 processed, 0 removed
[0.451s][info][gc,phases      ] GC(4) Phase 1: Mark live objects 15.504ms
[0.451s][info][gc,phases,start] GC(4) Phase 2: Compute new object addresses
[0.461s][info][gc,phases      ] GC(4) Phase 2: Compute new object addresses 10.200ms
[0.461s][info][gc,phases,start] GC(4) Phase 3: Adjust pointers
[0.471s][info][gc,phases      ] GC(4) Phase 3: Adjust pointers 9.726ms
[0.471s][info][gc,phases,start] GC(4) Phase 4: Move objects
[0.479s][info][gc,phases      ] GC(4) Phase 4: Move objects 7.416ms
[0.479s][info][gc,task        ] GC(4) Using 4 workers of 4 to rebuild remembered set
[0.495s][info][gc,heap        ] GC(4) Eden regions: 0->0(10)
[0.495s][info][gc,heap        ] GC(4) Survivor regions: 0->0(2)
[0.495s][info][gc,heap        ] GC(4) Old regions: 13->9
[0.495s][info][gc,heap        ] GC(4) Humongous regions: 7->3
[0.495s][info][gc,metaspace   ] GC(4) Metaspace: 5257K->5257K(1056768K)
[0.495s][info][gc             ] GC(4) Pause Full (Allocation Failure) 20M->11M(20M) 59.659ms
[0.495s][info][gc,cpu         ] GC(4) User=0.07s Sys=0.00s Real=0.06s
[0.495s][info][gc,marking     ] GC(2) Concurrent Mark From Roots 74.004ms
[0.495s][info][gc,marking     ] GC(2) Concurrent Mark Abort
[0.495s][info][gc             ] GC(2) Concurrent Cycle 74.083ms
[0.496s][info][gc,start       ] GC(5) Pause Initial Mark (G1 Humongous Allocation)
[0.496s][info][gc,task        ] GC(5) Using 4 workers of 4 for evacuation
[0.511s][info][gc,phases      ] GC(5)   Pre Evacuate Collection Set: 0.0ms
[0.511s][info][gc,phases      ] GC(5)   Evacuate Collection Set: 14.9ms
[0.511s][info][gc,phases      ] GC(5)   Post Evacuate Collection Set: 0.2ms
[0.511s][info][gc,phases      ] GC(5)   Other: 0.2ms
[0.511s][info][gc,heap        ] GC(5) Eden regions: 1->0(9)
[0.511s][info][gc,heap        ] GC(5) Survivor regions: 0->1(2)
[0.511s][info][gc,heap        ] GC(5) Old regions: 9->9
[0.511s][info][gc,heap        ] GC(5) Humongous regions: 3->3
[0.511s][info][gc,metaspace   ] GC(5) Metaspace: 5258K->5258K(1056768K)
[0.511s][info][gc             ] GC(5) Pause Initial Mark (G1 Humongous Allocation) 12M->12M(20M) 15.470ms
[0.511s][info][gc,cpu         ] GC(5) User=0.02s Sys=0.00s Real=0.02s
[0.511s][info][gc             ] GC(6) Concurrent Cycle
[0.511s][info][gc,marking     ] GC(6) Concurrent Clear Claimed Marks
[0.511s][info][gc,marking     ] GC(6) Concurrent Clear Claimed Marks 0.013ms
[0.511s][info][gc,marking     ] GC(6) Concurrent Scan Root Regions
[0.512s][info][gc,marking     ] GC(6) Concurrent Scan Root Regions 0.823ms
[0.512s][info][gc,marking     ] GC(6) Concurrent Mark (0.512s)
[0.512s][info][gc,marking     ] GC(6) Concurrent Mark From Roots
[0.512s][info][gc,task        ] GC(6) Using 1 workers of 1 for marking
[0.521s][info][gc,start       ] GC(7) Pause Young (G1 Evacuation Pause)
[0.521s][info][gc,task        ] GC(7) Using 4 workers of 4 for evacuation
[0.562s][info][gc             ] GC(7) To-space exhausted
[0.562s][info][gc,phases      ] GC(7)   Pre Evacuate Collection Set: 0.0ms
[0.562s][info][gc,phases      ] GC(7)   Evacuate Collection Set: 32.1ms
[0.562s][info][gc,phases      ] GC(7)   Post Evacuate Collection Set: 8.8ms
[0.562s][info][gc,phases      ] GC(7)   Other: 0.1ms
[0.562s][info][gc,heap        ] GC(7) Eden regions: 3->0(10)
[0.562s][info][gc,heap        ] GC(7) Survivor regions: 1->0(2)
[0.562s][info][gc,heap        ] GC(7) Old regions: 9->13
[0.562s][info][gc,heap        ] GC(7) Humongous regions: 7->7
[0.562s][info][gc,metaspace   ] GC(7) Metaspace: 5258K->5258K(1056768K)
[0.562s][info][gc             ] GC(7) Pause Young (G1 Evacuation Pause) 19M->19M(20M) 41.056ms
[0.562s][info][gc,cpu         ] GC(7) User=0.07s Sys=0.00s Real=0.04s
[0.562s][info][gc,start       ] GC(8) Pause Young (G1 Evacuation Pause)
[0.562s][info][gc,task        ] GC(8) Using 4 workers of 4 for evacuation
[0.569s][info][gc,phases      ] GC(8)   Pre Evacuate Collection Set: 0.0ms
[0.569s][info][gc,phases      ] GC(8)   Evacuate Collection Set: 6.2ms
[0.569s][info][gc,phases      ] GC(8)   Post Evacuate Collection Set: 0.5ms
[0.569s][info][gc,phases      ] GC(8)   Other: 0.1ms
[0.569s][info][gc,heap        ] GC(8) Eden regions: 0->0(10)
[0.569s][info][gc,heap        ] GC(8) Survivor regions: 0->0(2)
[0.569s][info][gc,heap        ] GC(8) Old regions: 13->13
[0.569s][info][gc,heap        ] GC(8) Humongous regions: 7->7
[0.569s][info][gc,metaspace   ] GC(8) Metaspace: 5258K->5258K(1056768K)
[0.569s][info][gc             ] GC(8) Pause Young (G1 Evacuation Pause) 19M->19M(20M) 6.810ms
[0.569s][info][gc,cpu         ] GC(8) User=0.02s Sys=0.00s Real=0.01s
[0.569s][info][gc,start       ] GC(9) Pause Full (Allocation Failure)
[0.569s][info][gc,phases,start] GC(9) Phase 1: Mark live objects
[0.594s][info][gc,stringtable ] GC(9) Cleaned string and symbol table, strings: 3498 processed, 0 removed, symbols: 23974 processed, 0 removed
[0.595s][info][gc,phases      ] GC(9) Phase 1: Mark live objects 25.249ms
[0.595s][info][gc,phases,start] GC(9) Phase 2: Compute new object addresses
[0.611s][info][gc,phases      ] GC(9) Phase 2: Compute new object addresses 16.317ms
[0.611s][info][gc,phases,start] GC(9) Phase 3: Adjust pointers
[0.626s][info][gc,phases      ] GC(9) Phase 3: Adjust pointers 15.546ms
[0.626s][info][gc,phases,start] GC(9) Phase 4: Move objects
[0.633s][info][gc,phases      ] GC(9) Phase 4: Move objects 6.822ms
[0.633s][info][gc,task        ] GC(9) Using 4 workers of 4 to rebuild remembered set
[0.657s][info][gc,heap        ] GC(9) Eden regions: 0->0(10)
[0.657s][info][gc,heap        ] GC(9) Survivor regions: 0->0(2)
[0.657s][info][gc,heap        ] GC(9) Old regions: 13->13
[0.657s][info][gc,heap        ] GC(9) Humongous regions: 7->4
[0.657s][info][gc,metaspace   ] GC(9) Metaspace: 5258K->5258K(1056768K)
[0.657s][info][gc             ] GC(9) Pause Full (Allocation Failure) 19M->16M(20M) 88.348ms
[0.657s][info][gc,cpu         ] GC(9) User=0.09s Sys=0.01s Real=0.09s
[0.658s][info][gc,marking     ] GC(6) Concurrent Mark From Roots 145.275ms
[0.658s][info][gc,marking     ] GC(6) Concurrent Mark Abort
[0.658s][info][gc             ] GC(6) Concurrent Cycle 146.302ms
[0.659s][info][gc,start       ] GC(10) Pause Initial Mark (G1 Humongous Allocation)
[0.659s][info][gc,task        ] GC(10) Using 4 workers of 4 for evacuation
[0.667s][info][gc             ] GC(10) To-space exhausted
[0.667s][info][gc,phases      ] GC(10)   Pre Evacuate Collection Set: 0.0ms
[0.667s][info][gc,phases      ] GC(10)   Evacuate Collection Set: 7.1ms
[0.667s][info][gc,phases      ] GC(10)   Post Evacuate Collection Set: 1.5ms
[0.667s][info][gc,phases      ] GC(10)   Other: 0.1ms
[0.667s][info][gc,heap        ] GC(10) Eden regions: 2->0(9)
[0.667s][info][gc,heap        ] GC(10) Survivor regions: 0->1(2)
[0.667s][info][gc,heap        ] GC(10) Old regions: 13->14
[0.667s][info][gc,heap        ] GC(10) Humongous regions: 4->4
[0.667s][info][gc,metaspace   ] GC(10) Metaspace: 5258K->5258K(1056768K)
[0.668s][info][gc             ] GC(10) Pause Initial Mark (G1 Humongous Allocation) 17M->18M(20M) 8.775ms
[0.668s][info][gc,cpu         ] GC(10) User=0.02s Sys=0.00s Real=0.01s
[0.668s][info][gc             ] GC(11) Concurrent Cycle
[0.668s][info][gc,marking     ] GC(11) Concurrent Clear Claimed Marks
[0.668s][info][gc,marking     ] GC(11) Concurrent Clear Claimed Marks 0.006ms
[0.668s][info][gc,marking     ] GC(11) Concurrent Scan Root Regions
[0.668s][info][gc,marking     ] GC(11) Concurrent Scan Root Regions 0.897ms
[0.668s][info][gc,marking     ] GC(11) Concurrent Mark (0.668s)
[0.668s][info][gc,marking     ] GC(11) Concurrent Mark From Roots
[0.668s][info][gc,task        ] GC(11) Using 1 workers of 1 for marking
[0.669s][info][gc,start       ] GC(12) Pause Young (G1 Humongous Allocation)
[0.669s][info][gc,task        ] GC(12) Using 4 workers of 4 for evacuation
[0.676s][info][gc             ] GC(12) To-space exhausted
[0.676s][info][gc,phases      ] GC(12)   Pre Evacuate Collection Set: 0.9ms
[0.676s][info][gc,phases      ] GC(12)   Evacuate Collection Set: 6.1ms
[0.676s][info][gc,phases      ] GC(12)   Post Evacuate Collection Set: 1.4ms
[0.676s][info][gc,phases      ] GC(12)   Other: 0.1ms
[0.676s][info][gc,heap        ] GC(12) Eden regions: 0->0(9)
[0.676s][info][gc,heap        ] GC(12) Survivor regions: 1->1(2)
[0.676s][info][gc,heap        ] GC(12) Old regions: 14->15
[0.676s][info][gc,heap        ] GC(12) Humongous regions: 4->4
[0.676s][info][gc,metaspace   ] GC(12) Metaspace: 5258K->5258K(1056768K)
[0.676s][info][gc             ] GC(12) Pause Young (G1 Humongous Allocation) 18M->19M(20M) 7.693ms
[0.676s][info][gc,cpu         ] GC(12) User=0.01s Sys=0.00s Real=0.00s
[0.676s][info][gc,start       ] GC(13) Pause Full (Allocation Failure)
[0.676s][info][gc,phases,start] GC(13) Phase 1: Mark live objects
[0.698s][info][gc,stringtable ] GC(13) Cleaned string and symbol table, strings: 3498 processed, 0 removed, symbols: 23974 processed, 0 removed
[0.698s][info][gc,phases      ] GC(13) Phase 1: Mark live objects 21.259ms
[0.698s][info][gc,phases,start] GC(13) Phase 2: Compute new object addresses
[0.721s][info][gc,phases      ] GC(13) Phase 2: Compute new object addresses 22.904ms
[0.721s][info][gc,phases,start] GC(13) Phase 3: Adjust pointers
[0.740s][info][gc,phases      ] GC(13) Phase 3: Adjust pointers 18.995ms
[0.740s][info][gc,phases,start] GC(13) Phase 4: Move objects
[0.741s][info][gc,phases      ] GC(13) Phase 4: Move objects 1.041ms
[0.741s][info][gc,task        ] GC(13) Using 4 workers of 4 to rebuild remembered set
[0.790s][info][gc,heap        ] GC(13) Eden regions: 0->0(10)
[0.790s][info][gc,heap        ] GC(13) Survivor regions: 1->0(2)
[0.790s][info][gc,heap        ] GC(13) Old regions: 15->14
[0.790s][info][gc,heap        ] GC(13) Humongous regions: 4->4
[0.790s][info][gc,metaspace   ] GC(13) Metaspace: 5258K->5258K(1056768K)
[0.790s][info][gc             ] GC(13) Pause Full (Allocation Failure) 19M->17M(20M) 113.998ms
[0.790s][info][gc,cpu         ] GC(13) User=0.11s Sys=0.00s Real=0.12s
[0.790s][info][gc,start       ] GC(14) Pause Full (Allocation Failure)
[0.790s][info][gc,phases,start] GC(14) Phase 1: Mark live objects
[0.832s][info][gc,stringtable ] GC(14) Cleaned string and symbol table, strings: 3498 processed, 0 removed, symbols: 23974 processed, 0 removed
[0.832s][info][gc,phases      ] GC(14) Phase 1: Mark live objects 41.643ms
[0.832s][info][gc,phases,start] GC(14) Phase 2: Compute new object addresses
[0.849s][info][gc,phases      ] GC(14) Phase 2: Compute new object addresses 17.238ms
[0.849s][info][gc,phases,start] GC(14) Phase 3: Adjust pointers
[0.864s][info][gc,phases      ] GC(14) Phase 3: Adjust pointers 15.009ms
[0.864s][info][gc,phases,start] GC(14) Phase 4: Move objects
[0.864s][info][gc,phases      ] GC(14) Phase 4: Move objects 0.013ms
[0.865s][info][gc,task        ] GC(14) Using 4 workers of 4 to rebuild remembered set
Exception in thread "main" [0.892s][info][gc,heap        ] GC(14) Eden regions: 0->0(10)
[0.892s][info][gc,heap        ] GC(14) Survivor regions: 0->0(2)
[0.892s][info][gc,heap        ] GC(14) Old regions: 14->14
[0.892s][info][gc,heap        ] GC(14) Humongous regions: 4->4
[0.892s][info][gc,metaspace   ] GC(14) Metaspace: 5258K->5258K(1056768K)
[0.892s][info][gc             ] GC(14) Pause Full (Allocation Failure) 17M->17M(20M) 101.663ms
[0.892s][info][gc,cpu         ] GC(14) User=0.11s Sys=0.00s Real=0.10s
[0.892s][info][gc,marking     ] GC(11) Concurrent Mark From Roots 223.671ms
[0.892s][info][gc,marking     ] GC(11) Concurrent Mark Abort
[0.892s][info][gc             ] GC(11) Concurrent Cycle 224.637ms
java.lang.OutOfMemoryError: Java heap space
	at java.base/java.util.Arrays.copyOf(Arrays.java:3719)
	at java.base/java.util.Arrays.copyOf(Arrays.java:3688)
	at java.base/java.util.ArrayList.grow(ArrayList.java:237)
	at java.base/java.util.ArrayList.grow(ArrayList.java:242)
	at java.base/java.util.ArrayList.add(ArrayList.java:467)
	at java.base/java.util.ArrayList.add(ArrayList.java:480)
	at jvm.HeapOOM.main(HeapOOM.java:28)
[0.898s][info][gc,heap,exit   ] Heap
[0.898s][info][gc,heap,exit   ]  garbage-first heap   total 20480K, used 17674K [0x00000000fec00000, 0x00000000fed000a0, 0x0000000100000000)
[0.898s][info][gc,heap,exit   ]   region size 1024K, 1 young (1024K), 0 survivors (0K)
[0.898s][info][gc,heap,exit   ]  Metaspace       used 5304K, capacity 5372K, committed 5632K, reserved 1056768K
[0.898s][info][gc,heap,exit   ]   class space    used 463K, capacity 492K, committed 512K, reserved 1048576K

一共进行了14次垃圾回收。

栈内存异常 StackOverflowError

实例代码

public class StackOOM {

    public static void func(){
        func();
    }

    public static void main(String[] args) {

        func();
    }
}

虚拟机参数

-Xlog:gc* -Xss200k

输出

/home/lgj/java/jdk-9.0.1/bin/java -Xlog:gc* -Xss200k -javaagent:/home/lgj/java/idea-IU-181.5281.24/lib/idea_rt.jar=45308:/home/lgj/java/idea-IU-181.5281.24/bin -Dfile.encoding=UTF-8 -classpath /home/lgj/aProject/JavaBase/target/classes jvm.StackOOM
[0.012s][info][gc,heap] Heap region size: 1M
[0.017s][info][gc     ] Using G1
[0.017s][info][gc,heap,coops] Heap address: 0x0000000724a00000, size: 2486 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
Exception in thread "main" java.lang.StackOverflowError
	at jvm.StackOOM.func(StackOOM.java:17)
	at jvm.StackOOM.func(StackOOM.java:17)	
	.......	
	at jvm.StackOOM.func(StackOOM.java:17)
[0.370s][info][gc,heap,exit ] Heap
[0.370s][info][gc,heap,exit ]  garbage-first heap   total 159744K, used 3072K [0x0000000724a00000, 0x0000000724b004e0, 0x00000007c0000000)
[0.370s][info][gc,heap,exit ]   region size 1024K, 4 young (4096K), 0 survivors (0K)
[0.370s][info][gc,heap,exit ]  Metaspace       used 5361K, capacity 5432K, committed 5632K, reserved 1056768K
[0.370s][info][gc,heap,exit ]   class space    used 463K, capacity 492K, committed 512K, reserved 1048576K

Process finished with exit code 1

栈内存异常测试 OutOfMemoryError

public class StackOOM {

    private  static int count = 0;

    public static void main(String[] args)
    {
        StackOOM test = new StackOOM();
        test.oomMethod();
    }

    public void oomMethod()
    {
        for (int i=0;i<10000000;i++)
        {

            new Thread(new Runnable()
            {
                @Override
                public void run()
                {
                    while (true)
                    {
                        //此处应让线程进入休眠态,否则一直死循环,将耗尽计算机的计算资源,让系统宕机
                        try
                        {
                            count++;
                            Thread.sleep(1000000);
                        } catch (InterruptedException e)
                        {
                            System.out.println("开启"+count+"线程");
                            e.printStackTrace();
                        }
                    }
                }
            }).start();
        }
    }

}

vm配置

 -Xss136k

输出

/home/lgj/java/jdk-9.0.1/bin/java -Xlog:gc* -Xss2m -Xms20M -Xmx20M -Xmn10M -javaagent:/home/lgj/java/idea-IU-181.5281.24/lib/idea_rt.jar=45785:/home/lgj/java/idea-IU-181.5281.24/bin -Dfile.encoding=UTF-8 -classpath /home/lgj/aProject/JavaBase/target/classes jvm.StackOOM
[0.069s][info][gc,heap] Heap region size: 1M
[0.071s][info][gc     ] Using G1
[0.071s][info][gc,heap,coops] Heap address: 0x00000000fec00000, size: 20 MB, Compressed Oops mode: 32-bit
[4.768s][warning][os,thread    ] Failed to start thread - pthread_create failed (EAGAIN) for attributes: stacksize: 2048k, guardsize: 0k, detached.
Exception in thread "main" java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached
	at java.base/java.lang.Thread.start0(Native Method)
	at java.base/java.lang.Thread.start(Thread.java:813)
	at jvm.StackOOM.oomMethod(StackOOM.java:48)
	at jvm.StackOOM.main(StackOOM.java:21)

猜你喜欢

转载自blog.csdn.net/u011676300/article/details/83039937