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