jvm参数设置

一、内存配置

堆:

  • 堆内存
    • -Xms 分配堆初始内存,默认为物理内存的1/64,同-XX:InitialHeapSize
    • -Xmx 分配堆最大内存,默认为物理内存的1/4,同-XX:MaxHeapSize
  • 新生代
    • -XX:NewSize 设置堆中新生代初始内存
    • -XX:MaxNewSize  设置堆中新生代最大内存,最大只能设为-Xmx的一半

方法区:

  • -XX:PermSize 分配方法区最小内存,默认为物理内存的1/64
  • -XX:MaxPermSize 分配方法区最大内存,默认为物理内存的1/4

虚拟机栈

  • -Xss jvm启动的每个线程分配的内存大小

直接内存

  • -XX:MaxDirectMemorySize 分配本机直接最大内存,默认与Java堆最大值(-Xmx指定)相同

ps:以上参数的设置都是默认以Byte为单位的,也可以在数字后面添加[k/K]或者[m/M]来表示KB或者MB

 

二、OOM日志

OOM日志参数:

  • -XX:+HeapDumpOnOutOfMemoryError  dump日志,文件名为java_pid<pid>.hprof,默认不dump
  • -XX:HeapDumpPath=<path>    指定日志路径,默认为驱动目录
  • -XX:OnOutOfMemoryError  指定可执行文件或脚本,在OOM发生时执行

 

三、GC日志

GC日志参数:

  • -verbose:gc  表示打开简化的GC日志,默认关闭,同-XX:+PrintGC
  • -XX:+PrintGCDetails    输出GC详细日志
  • -Xloggc:<file>  表示把GC日志写入到一个文件中去,而不是打印到标准输出中

 

三、分析工具

jps:查看jvm进程

用法:
jps    [option] 
-l    输出主类名,执行的是jar包,则数据jar路径
-v    输出虚拟机启动时JVM参数

jinfo: 查看jvm运行参数

用法:
jinfo    [option]     pid
-flag <name>    输出指定参数值
-flags    输出JVM参数列表,可根据参数查看GC版本
-sysprops    输出System.getProperties()参数值

jstat:查看内存使用情况(详细查看:jstat命令查看jvm的GC情况

用法:
jstat    [option]     pid
-gc     输出java堆状况
-gcutil    输出与-gc基本相同,但关注占总空间百分比

jmap:查看堆使用情况

用法:
jmap    [option]     pid
-dump     生成堆快照,使用方式:jmap -dump:format=b,file=<filename>
-heap    显示Java堆详细信息,如使用哪种回收器

jstack:查看堆栈信息

用法:
jstack    [option]     pid
-l     除堆栈外,显示关于锁的附加信息

jcmd pid GC.run:启动垃圾回收(详细查看帮助:jcmd pid help)

jcmd pid Thread.print:等价 jstack

 

 

Java程序员必学的Hotspot JVM选项

posted @ 2018-08-02 13:55  Matt_Cheng  阅读(310)  评论(0编辑  收藏  举报