• JVM内存分配与回收策略


    对象优先在Eden分配

      SurvivorRatio:将新生代中Eden区域与Survivor区域的容量比值,默认为8,代表Eden:Survivor=8:1

     1 public class TestObjectForEden {
     2 
     3     private static final int _1MB=1024*1024;
     4 
     5     public static void testAllocation(){
     6         byte[] allocation1,allocation2,allocation3,allocation4;
     7         allocation1=new byte[2*_1MB];
     8         allocation2=new byte[2*_1MB];
     9         allocation3=new byte[2*_1MB];
    10         allocation4=new byte[2*_1MB];//出现一次Minor GC
    11     }
    12 
    13     public static void main(String[] args) {
    14         testAllocation();
    15     }
    16 
    17 }

    运行结果为:

      虚拟机参数为:-verbose:gc -Xms20M -Xmx20M -Xmn20M -XX:+PrintGCDetails -XX:SurvivorRatio=8

      Heap
      def new generation total 18432K, used 12838K [0x03c00000, 0x04ff0000, 0x04ff0000)
      eden space 16448K, 78% used [0x03c00000, 0x04889b68, 0x04c10000)
      from space 1984K, 0% used [0x04c10000, 0x04c10000, 0x04e00000)
      to space 1984K, 0% used [0x04e00000, 0x04e00000, 0x04ff0000)
      tenured generation total 64K, used 0K [0x04ff0000, 0x05000000, 0x05000000)
      the space 64K, 0% used [0x04ff0000, 0x04ff0000, 0x04ff0200, 0x05000000)
      Metaspace used 2109K, capacity 2312K, committed 2368K, reserved 4480K

      虚拟机参数为:-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8

      [GC (Allocation Failure) [DefNew: 8093K->1016K(9216K), 0.0158618 secs] 8093K->5135K(19456K), 0.0289222 secs] [Times: user=0.00 sys=0.01, real=0.03 secs]
      Disconnected from the target VM, address: '127.0.0.1:57678', transport: 'socket'
      Heap
      def new generation total 9216K, used 5354K [0x04000000, 0x04a00000, 0x04a00000)
      eden space 8192K, 52% used [0x04000000, 0x0443ca98, 0x04800000)
      from space 1024K, 99% used [0x04900000, 0x049fe0d8, 0x04a00000)
      to space 1024K, 0% used [0x04800000, 0x04800000, 0x04900000)
      tenured generation total 10240K, used 4119K [0x04a00000, 0x05400000, 0x05400000)
      the space 10240K, 40% used [0x04a00000, 0x04e05cb0, 0x04e05e00, 0x05400000)
      Metaspace used 2109K, capacity 2312K, committed 2368K, reserved 4480K

      在通过运行时通过设置虚拟机参数-Xms20M -Xmx20M -Xmn10M限制Java堆大小为20MB,不可扩展,10MB分配给新生代,剩下10MB分给老年代。

     1 public class TestObjectForEden {
     2 
     3     private static final int _1MB=1024*1024;
     4 
     5     public static void testAllocation(){
     6         byte[] allocation1,allocation2,allocation3,allocation4;
     7         allocation1=new byte[2*_1MB];
     8         allocation2=new byte[2*_1MB];
     9         allocation3=new byte[2*_1MB];
    10         allocation4=new byte[4*_1MB];//出现一次Minor GC
    11     }
    12 
    13     public static void main(String[] args) {
    14         testAllocation();
    15     }
    16 
    17 }

      [GC (Allocation Failure) [DefNew: 8093K->1016K(9216K), 0.0168326 secs] 8093K->5135K(19456K), 0.0169262 secs] [Times: user=0.00 sys=0.01, real=0.02 secs]
      Heap
      def new generation total 9216K, used 7402K [0x03e00000, 0x04800000, 0x04800000)
      eden space 8192K, 77% used [0x03e00000, 0x0443ca98, 0x04600000)
      from space 1024K, 99% used [0x04700000, 0x047fe0d8, 0x04800000)
      to space 1024K, 0% used [0x04600000, 0x04600000, 0x04700000)
      tenured generation total 10240K, used 4119K [0x04800000, 0x05200000, 0x05200000)
      the space 10240K, 40% used [0x04800000, 0x04c05cb0, 0x04c05e00, 0x05200000)
      Metaspace used 2109K, capacity 2312K, committed 2368K, reserved 4480K

     1 public class TestObjectForEden {
     2 
     3     private static final int _1MB=1024*1024;
     4 
     5     public static void testAllocation(){
     6         byte[] allocation1,allocation2,allocation3,allocation4;
     7         allocation1=new byte[2*_1MB];
     8         allocation2=new byte[2*_1MB];
     9         allocation3=new byte[2*_1MB];
    10         allocation4=new byte[6*_1MB];//出现一次Minor GC
    11     }
    12 
    13     public static void main(String[] args) {
    14         testAllocation();
    15     }
    16 
    17 }

      [GC (Allocation Failure) [DefNew: 8093K->1016K(9216K), 0.0159405 secs] 8093K->5135K(19456K), 0.0160188 secs] [Times: user=0.00 sys=0.02, real=0.02 secs] 

      [GC (Allocation Failure) [DefNew: 3064K->0K(9216K), 0.0097685 secs] 7183K->7000K(19456K), 0.0098040 secs] [Times: user=0.00 sys=0.02, real=0.01 secs]
      Heap
      def new generation total 9216K, used 6226K [0x04800000, 0x05200000, 0x05200000)
      eden space 8192K, 76% used [0x04800000, 0x04e14938, 0x05000000)
      from space 1024K, 0% used [0x05000000, 0x05000000, 0x05100000)
      to space 1024K, 0% used [0x05100000, 0x05100000, 0x05200000)
      tenured generation total 10240K, used 7000K [0x05200000, 0x05c00000, 0x05c00000)
      the space 10240K, 68% used [0x05200000, 0x058d6088, 0x058d6200, 0x05c00000)
      Metaspace used 2109K, capacity 2312K, committed 2368K, reserved 4480K

  • 相关阅读:
    android button click事件
    springmvc 多方法访问
    hibernate的save和saveOrUpdate方法
    总结的方法
    oracle 存储过程
    ibatis学习笔记(四)>>>>>>>ibatis使用实例
    ibatis学习笔记(二)>>>>>>>sqlMapConfig.xml文件详解
    ibatis学习笔记(三)>>>>>>>java实体跟表映射.xml文件详解
    ibatis学习笔记(一)>>>>>>>sqlMapConfig.xml文件详解
    spring
  • 原文地址:https://www.cnblogs.com/award/p/10934289.html
Copyright © 2020-2023  润新知