Jvm参数配置

Posted Steven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

2)案例

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

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

以上是关于Jvm参数配置的主要内容,如果未能解决你的问题,请参考以下文章

java 简单的代码片段,展示如何将javaagent附加到运行JVM进程

从JVM的角度看JAVA代码--代码优化

java面试-JVM调优和参数配置

内存溢出与jvm参数配置

jvm基础--JVM参数配置

JVM参数这样配置会让你的程序更快更强