Jvm参数配置详解程序员

一、非稳态选项使用说明

-XX:+<option> 启用option 
-XX:-<option> 不启用option 
-XX:<option>=<number> 设定option的值为数字类型,可跟单位,例如 32k, 1024m, 2g 
-XX:<option>=<string> 设定option的值为字符串,例如-XX:HeapDumpPath=./dump.core

二、Java相关的JVM内存参数

-Xms :设置Java堆栈的初始化大小 
-Xmx :设置最大的java堆大小 
-Xmn :设置Young区大小 
-Xss :设置java线程堆栈大小 
-XX:PermSize and MaxPermSize :设置持久带的大小 
-XX:NewRatio :设置年轻代和老年代的比值 
-XX:NewSize :设置年轻代的大小 
-XX:SurvivorRation=n :设置年轻代中E去与俩个S去的比值

三、打印垃圾回收器信息和设置垃圾回收器(串行、并行、并发等行为的收集器)

-verbose:gc :记录GC运行以及运行时间,一般用来查看GC是否有瓶颈 
-XX:+PrintGCDetails :记录GC运行时的详细数据信息,包括新生占用的内存大小及消耗时间 
-XX:-PrintGCTimeStamps :打印收集的时间戳 
-XX:+UseParallelGC :使用并行垃圾收集器 
-XX:-UseConcMarkSweepGC :使用并发标志扫描收集器 
-XX:-UseSerialGC :使用串行垃圾收集器 
-Xloggc:filename :设置GC记录的文件 
-XX:+UseGCLogFileRotation :启用GC日志文件的自动转储 
-XX:GCLogFileSize=1M :控制GC日志文件的大小

四、调试参数

-Xdebug 
-Xnoagent 
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 
-XX:HeapDumpPath=./java_pid.hprof :Path to directory or file name for heap dump. 
-XX:-PrintConcurrentLocks :Print java.util.concurrent locks in Ctrl-Break thread dump. 
-XX:-PrintCommandLineFlags :Print flags that appeared on the command line.

五、关于性能

-Xprof 
-Xrunhprof

六、类加载和卸载的信息

Xbootclasspath :指定需要加载,但不想通过校验类路径。 
JVM会对所有的类在加载前进行校验并为每个类通过一个int数值来应用 
-XX:+TraceClassLoading :跟踪类加载的信息(诊断内存泄露很有用) 
-XX:+TraceClassUnloading :跟踪类卸载的信息(诊断内存泄露很有用)

七、jvm测试案例

1)首先配置VM arguments

Jvm参数配置详解程序员

2)案例

Jvm参数配置详解程序员

3)运行程序后,GC日志就可以打印出来了

Jvm参数配置详解程序员

DefNew(年轻代)
    年轻代分三个区。一个Eden区,两个Survivor区。大部分对象在Eden区中生成。当Eden区满时,还存活的对象将被复制到Survivor区(两个中的一个),当这个Survivor区满时,此区的存活对象将被复制到另外一个Survivor区,当这个Survivor区也满了的时候,从第一个Survivor区复制过来的并且此时还存活的对象,将被复制“年老区(Tenured)”。需要注意,Survivor的两个区是对称的,没先后关系,所以同一个区中可能同时存在从Eden复制过来对象,和从前一个Survivor复制过来的对象,而复制到年老区的只有从第一个Survivor区过来的对象。而且Survivor区总有一个是空 的。
Tenured(年老代)
    年老代存放从年轻代存活的对象。一般来说年老代存放的都是生命期较长的对象。
Perm(持久代)
    用于存放静态文件,持久代对垃圾回收没有显著影响,持久代大小通过-XX:MaxPermSize=<N>进行设置。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/1872.html

(0)
上一篇 2021年7月15日
下一篇 2021年7月15日

相关推荐

发表回复

登录后才能评论