• JVM运行时参数


    1、标准参数选项

    比较稳定,后续版本基本不会变化

    2、-X参数选项

    java -X

     

    1. -Xmixed 混合模式执行 (默认)
    2. -Xint 仅解释模式执行

     

    1. -Xms<size> 设置初始Java堆大小,等价于-XX:InitialHeapSize
    2. -Xmx<size> 设置最大Java堆大小,等价于-XX:MaxHeapSize
    3. -Xss<size> 设置Java线程堆栈大小,等价于-XX:ThreadStackSize

    3、-XX参数选项

    3.1、分类(Boolean类型格式)

    1. -XX:+ 表示启用option属性
    2. -XX:- 表示禁用optioan属性
    1. -XX:-UseParallelGC 不选择垃圾收集器为并行收集器
    2. -XX:+UseG1GC 表示启用G1收集器
    3. -XX:+UseAdaptiveSizePolicy 自动选择年轻代区大小和相应的Survivor区比例

     

    3.2、非Boolean类型格式

    1. -XX: 数值型格式
    2. -XX:= 非数值型格式
    1. -XX:NewSize=1024m 表示设置新生代初始大小为1024
    2. -XX:MaxGCPauseMillis=500 表示设置GC停顿时间:500毫秒
    3. -XX:GCTimeRatio=19 表示设置吞吐量
    4. -XX:NewRatio=2 表示新生代和老年代的比例
    -XX:HeapDumpPath=/usr/local/heapdump.hprof 知道heap转存文件的存储路径

    3.3、特别的

    1. -XX:+PrintFlagFinal
    2. 输出所有参数的名称和默认值
    3. 默认不包括DiagnosticExperimental的参数
    4. 可以配合-XX:+UnlockDiagnosticVMOptions和-XX:UnlockExperimentalVMOptions使用

    4、添加参数

    4.1、在运行时添加

    使用jinfo -flag <name>=<value> <pid>设置非Boolean类型参数
    使用jinfo -flag [+|-]<name> <pid>设置Boolean类型参数
    jinfo -flag UseParallelGC PID

     

    4.2、在idea添加

     

     5、常用JVM参数选项

    5.1、打印设置的XX选项及值

    -XX:+PrintFlagsFinal  //表示打印出XX选项在运行程序时生效的值

    5.2、堆、栈、方法区等内存大小设置

    5.2.1、栈

    -Xss128k  等价于-XX:ThreadStackSize,设置每个线程的栈大小为128k

    5.2.2、堆内存

    1. -Xms3550m 等价于-XX:InitialHeapSize,设置JVM初始堆内存为3500M
    2. -Xmx3550m 等价于-XX:MaxHeapSize,设置JVM最大堆内存为3500M
    3. -Xmn2g 设置年轻代大小为2G,即等价于-XX:NewSize=2g -XX:MaxNewSize=2g,也就是设置年轻代初始值和年轻代最大值都是2G 官方推荐配置为整个堆大小的3/8
    4. -XX:NewSize=1024m 设置年轻代初始值为1024M
    5. -XX:MaxNewSize=1024m 设置年轻代最大值为1024M
    6. -XX:SurvivorRatio=8 设置年轻代中Eden区与一个Survivor区的比值,默认为8
    7. -XX:+UseAdaptiveSizePolicy 自动选择各区大小比例,默认开启
    8. -XX:NewRatio=2 设置老年代与年轻代(包括1个Eden区和2个Survivor区)的比值,默认为2
    9. -XX:PretenureSizeThreadshold=1024 设置让大于此阈值的对象直接分配在老年代,单位为字节
    10. 只对Serial、ParNew收集器有效
    11. -XX:MaxTenuringThreshold=15 默认值为15 新生代每次MinorGC后,还存活的对象年龄+1,当对象的年龄大于设置的这个值时就进入老年代
    12. -XX:+PrintTenuringDistribution 让JVM在每次MinorGC后打印出当前使用的Survivor中对象的年龄分布
    13. -XX:TargetSurvivorRatio 表示MinorGC结束后Survivor区域中占用空间的期望比例

     

    -XX:+UseAdaptiveSizePolicy //自动选择各区大小比例,默认开启,会影响设置(建议打开)

    5.2.3、方法区

    5.2.4、直接内存

    -XX:MaxDirectMemorySize

    5.3、OutOfMemory相关的选项

    1. -XX:+HeapDumpOnOutMemoryError
    2. 表示在内存出现OOM的时候,生成Heap转储文件,以便后续分析,-XX:+HeapDumpBeforeFullGC和-XX:+HeapDumpOnOutMemoryError只能设置1
    1. -XX:+HeapDumpBeforeFullGC
    2. 表示在出现FullGC之前,生成Heap转储文件,以便后续分析,-XX:+HeapDumpBeforeFullGC和-XX:+HeapDumpOnOutMemoryError只能设置1个,请注意FullGC可能出现多次,那么dump文件也会生成多个
    -XX:HeapDumpPath=  指定heap转存文件的存储路径,如果不指定,就会将dump文件放在当前目录中
    -XX:OnOutOfMemoryError 指定一个可行性程序或者脚本的路径,当发生OOM的时候,去执行这个脚本

     

    5.4、垃圾收集器相关选项

     

     

    5.4.1、查看默认的垃圾回收器

    1. -XX:+PrintCommandLineFlags:查看命令相关参数
    2. jinfo -flag 相关垃圾回收器参数 进程ID

    5.4.2、Serial回收器(串行)

    作为HotSpot中Client 模式下的默认新生代垃圾收集器,Serial Old是运行在Client模式下默认的老年代的垃圾回收器

    5.4.3、Parnew回收器(并行)

    年轻代使用的并行收集器,不影响老年代

    5.4.4、Parallel回收器(并行 jDK默认垃圾收集器,主打吞吐量)

    5.4.5、CMS回收器(并发,垃圾回收线程,和用户线程,JDk1.5开启)

    5.4.6、G1回收器

    5.4.7、怎么选择垃圾收集器

    5.5、GC日志相关选项

    常用参数:

    1. -verbose:gc 输出日志信息,默认输出的标准输出,可以独立使用
    2. -XX:+PrintGC 等同于-verbose:gc 表示打开简化的日志 可以独立使用
    3. -XX:+PrintGCDetails 在发生垃圾回收时打印内存回收详细的日志, 并在进程退出时输出当前内存各区域的分配情况 可以独立使用
    4. -XX:+PrintGCTimeStamps 程序启动到GC发生的时间秒数 不可以独立使用,需要配-XX:+PrintGCDetails使用
    5. -XX:+PrintGCDateStamps 输出GC发生时的时间戳(以日期的形式,例如:2013-05-04T21:53:59.234+0800)不可以独立使用,可以配合-XX:+PrintGCDetails使用
    6. -XX:+PrintHeapAtGC 每一次GC前和GC后,都打印堆信息,可以独立使用
    7. -XIoggc:<file> 把GC日志写入到一个文件中去,而不是打印到标准输出中

    5.6、其他

  • 相关阅读:
    perl 对 xml 和 json 的简单应用
    情绪化软文怎么写?媒介盒子分享五大步骤
    长链接概念
    什么耳机适合华为手机?适合华为手机的蓝牙耳机推荐
    css 文字单行多行超出长度后显示 ...
    深圳超力源7220 电摩保护板联调时一个CAN盒解决所有的问题
    Python中使用print函数的三种输出方式
    用Python Pygame做的一些好玩的小游戏
    GEE/PIE遥感大数据处理与典型案例
    朝花夕拾 - 停更三月,期待 失败
  • 原文地址:https://blog.csdn.net/CB_Beginner/article/details/127044146