美文网首页
JVM运行时数据区--堆

JVM运行时数据区--堆

作者: 南园故剑00 | 来源:发表于2020-08-25 21:09 被阅读0次

    package com.atguigu.java;
    
    /**
     * 1. 设置堆空间大小的参数
     * -Xms 用来设置堆空间(年轻代+老年代)的初始内存大小
     *      -X 是jvm的运行参数
     *      ms 是memory start
     * -Xmx 用来设置堆空间(年轻代+老年代)的最大内存大小
     *
     * 2. 默认堆空间的大小
     *    初始内存大小:物理电脑内存大小 / 64
     *             最大内存大小:物理电脑内存大小 / 4
     * 3. 手动设置:-Xms600m -Xmx600m
     *     开发中建议将初始堆内存和最大的堆内存设置成相同的值。
     *
     * 4. 查看设置的参数:方式一: jps   /  jstat -gc 进程id
     *                  方式二:-XX:+PrintGCDetails
     * @author shkstart  shkstart@126.com
     * @create 2020  20:15
     */
    public class HeapSpaceInitial {
        public static void main(String[] args) {
    
            //返回Java虚拟机中的堆内存总量
            long initialMemory = Runtime.getRuntime().totalMemory() / 1024 / 1024;
            //返回Java虚拟机试图使用的最大堆内存量
            long maxMemory = Runtime.getRuntime().maxMemory() / 1024 / 1024;
    
            System.out.println("-Xms : " + initialMemory + "M");
            System.out.println("-Xmx : " + maxMemory + "M");
    
            //显示为575M。是因为s0和s1始终有一个是空的。575=s0c+ec+oc
    
    //        System.out.println("系统内存大小为:" + initialMemory * 64.0 / 1024 + "G");
    //        System.out.println("系统内存大小为:" + maxMemory * 4.0 / 1024 + "G");
    
            try {
                Thread.sleep(1000000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    
    

    在hotSpot中,Eden空间和另外两个Survivor空间缺省所占的比例是8:1:1(测试的时候是6:1:1),开发人员可以通过选项 -XX:SurvivorRatio 调整空间比例,如-XX:SurvivorRatio=8

    TLAB默认开启的


     * 测试堆空间常用的jvm参数:
     * -XX:+PrintFlagsInitial : 查看所有的参数的默认初始值
     * -XX:+PrintFlagsFinal  :查看所有的参数的最终值(可能会存在修改,不再是初始值)
     *      具体查看某个参数的指令: jps:查看当前运行中的进程
     *                             jinfo -flag SurvivorRatio 进程id
     *
     * -Xms:初始堆空间内存 (默认为物理内存的1/64)
     * -Xmx:最大堆空间内存(默认为物理内存的1/4)
     * -Xmn:设置新生代的大小。(初始值及最大值)
     * -XX:NewRatio:配置新生代与老年代在堆结构的占比
     * -XX:SurvivorRatio:设置新生代中Eden和S0/S1空间的比例
     * -XX:MaxTenuringThreshold:设置新生代垃圾的最大年龄
     * -XX:+PrintGCDetails:输出详细的GC处理日志
     * 打印gc简要信息:① -XX:+PrintGC   ② -verbose:gc
     * -XX:HandlePromotionFailure:是否设置空间分配担保
    

    空间分配担保


    相关文章

      网友评论

          本文标题:JVM运行时数据区--堆

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