JVM设置(调优)
程序员文章站
2022-03-03 19:43:37
...
1). 参数查询
java
-server 选择 "server" VM 默认 VM 是 server.
-cp <目录和 zip/jar 文件的类搜索路径>
-classpath <目录和 zip/jar 文件的类搜索路径> 用 ; 分隔的目录,
JAR 档案 和 ZIP 档案列表, 用于搜索类文件。
-D<名称>=<值> 设置系统属性 ,(有时候 可以用 这个选项 给 jvm设置 系统属性,用于逻辑判断)
java -X
-Xms<size> 设置初始 Java 堆大小
-Xmx<size> 设置最大 Java 堆大小
-Xss<size> 设置 Java 线程堆栈大小
-Xloggc:<file> 将 GC 状态记录在文件中 (带时间戳)
java -XX:+PrintFlagsFinal 查看所有的 jvm 设置项
2). 堆设置
首先设置堆初始大小 最大大小
-Xms2g
-Xmx2g
2个设置年轻代的参数(老年代=总大小-年轻代大小):
-XX:newSize=1g
-XX:MaxnewSize=1g
另一个年轻的大小
-Xmn1g
另外可以通过年轻代与老年代的比例来设置:
-XX:NewRatio=3 ,表示年轻代:老年代 = 1:3
年轻代的 Eden、Survivor 比例设置 参数:
-XX:SurvivorRatio=2 , from:to:eden = 1:1:2
年轻代设置的大,可以减少 gc 次数。如果年轻代太小,可能会频繁gc,导致 STW 很长
3). 进入老年代 年龄设置
-XX:MaxTenuringThreshold=7 表示 一个对象 经历了 7次 gc 依然存活,则进入老年代
4). 打印gc信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps gc发生的时间信息
-XX:+HeapDumpOnOutOfMemoryError oom时 dump
-XX:HeapDumpPath=e:\d.txt 可以指定dump 文件
5). jdk 自带工具
jps 可以 进程号
jinfo 查看及设置 进程 配置信息
jstack 查询 某进程 所有的 线程栈 信息
jstat jdk自带的分析工具
<option>包括:
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation
查看gc情况:
jstat -gc 19896(进程号) 1000(打印间隔时间)
jmap
jmap -histo 19896 to print histogram of java object heap
jmap -heap 19896 to print java heap summary
jmap -dump:file=e:/a.txt 19896 to dump java heap in hprof binary format