• JVM常用配置参数说明


    堆设置

    -Xms256M:初始堆大小256M,默认为物理内存的1/64

    -Xmx1024M:最大堆大小1024M,默认为物理内存的1/4,等于与-XX:MaxHeapSize=64M

    -Xmn64M:年轻代大小为64M(JDK1.4后支持),相当于同时设置NewSize和MaxNewSize为64M

    -XX:NewSize=64M:初始年轻代大小

    -XX:MaxNewSize=256M:最大年轻代大小(默认为堆最大值的1/3)

    -XX:OldSize=64M:年老代大小64M(测试验证JDK1.8.191该参数设置无效,JDK11下设置成功)

    -XX:NewRatio=4:年老代:年轻代=4:1,默认值2

    -XX:SurvivorRatio=8:年轻代中,2个Survivor区与1个Eden区比例=2:8,Survivor占新生代内存比例为1/5,默认值8

    -XX:MaxHeapFreeRatio=70:堆内存使用率大于70时扩张堆内存,xms=xmx时该参数无效,默认值70

    -XX:MinHeapFreeRatio=40:堆内存使用率小于40时缩减堆内存,xms=xmx时该参数无效,默认值40

    备注:

    堆大小=年轻代(Young Generation)+年老代(Old Generation),网上有同学将持久代归为堆内存,感觉是错误的。

    年轻代=伊甸园区(Eden Space) + 幸存者区(Survivor Space,Serial收集器有2个相同容量的幸存者区,分别叫From和To,G1收集器只有一个,此处是个人理解,不一定正确)。

    持久代设置(共享内存的非堆区域)

    -XX:PermSize=56M:初始分配的持久代容量,默认为物理内存的1/64(从1.8起,该参数已作废,可使用-XX:MetaspaceSize替代)

    -XX:MaxPermSize=56M:持久代的最大容量,默认为物理内存的1/4,设置值过小会导致java.lang.OutOfMemoryError: PermGen space错误。(从1.8起,该参数已作废,可使用-XX:MaxMetaspaceSize替代)

     

    元空间(共享内存的非堆区域,JDK1.8新增)

    -XX:MetaspaceSize=64M:触发FullGC阈值,默认21807104B,约20.8M,而且Metaspace内存容量到达该阈值后,每次扩容都有可能会触发FullGC

    -XX:MaxMetaspaceSize=512M:最大元空间大小,默认无限制

    虚拟机线程堆栈

    -Xss128k:设置JAVA线程堆栈大小为128k

    GC相关

    -Xnoclassgc:关闭JVM垃圾回收功能

    -XX:+UseSerialGC:使用Serial垃圾收集器,单线程串型收集器(client模式默认垃圾收集器)

    -XX:+UseParNewGCSerial收集器的多线程升级版

    -XX:+UseParallelGC:使用Parallel垃圾收集器(JDK1.8默认收集器),优点吞吐量高

    -XX:+UseConcMarkSweepGC:使用CMS垃圾收集器,优点低延迟

    -XX:+UseG1GC:使用G1垃圾回收器(新一代,重点关注),优点低延迟

    -XX:+PrintCommandLineFlags:打印虚拟机默认参数

    -XX:+DisableExplicitGC:静止Java程序中的FULL GC,如System.gc()

    -XX:+PrintGCDetails:GC时打印详细信息(JDK11已过期,新版本使用-Xlog:gc代替)

    -XX:+PrintGC:GC时打印信息(JDK11已过期,新版本使用-Xlog:gc代替)

    -XX:+PrintTenuringDistribution:用于显示每次Minor GC(年轻代GC)时Survivor区中各个年龄段的对象的大小

    -XX:InitialTenuringThreshol:年轻代对象转换为老年代对象最小年龄值,默认值7,对象在坚持过一次Minor GC之后,年龄就加1

    -XX:MaxTenuringThreshold:年轻代对象转换为老年代对象最大年龄值,默认值15

    -Xloggc:filename:将GC信息输出到文件,带时间戳(如:-Xloggc:E:gc.txt,JKD11已过期,新版本使用-Xlog:gc:gc.txt代替,日志内容见下图)

    -XX:+PrintHeapAtGC:GC时打印堆前后信息

    -Xlog:gc:输出GC日志信息(JDK11新增)

    其他

    -XX:+HeapDumpOnOutOfMemoryError:内存溢出时Dump出当前堆内存快照

    -XX:HeapDumpPath=filename:导出路径(如:-XX:HeapDumpPath=E:/a.dump)

    -XX:PretenureSizeThreshold=10240:对象大小超过10KB时直接在年老代分配内存。默认值0,单位字节,表示所有的对象都在年轻代eden区分配

  • 相关阅读:
    第二章 Java浮点数精确计算
    第一章 Java代码执行流程
    第九章 JVM调优推荐
    第八章 JVM性能监控与故障处理工具(2)
    基于Redis构建10万+终端级的高性能部标JT808协议的Gps网关服务器(转)
    基于Java Netty框架构建高性能的Jt808协议的GPS服务器(转)
    Netty(七):流数据的传输处理
    Java中的位运算符
    二进制(原码、反码、补码)
    Java数据结构和算法(二):数组
  • 原文地址:https://www.cnblogs.com/zhi-leaf/p/10627949.html
Copyright © 2020-2023  润新知