欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

相关标签: 笔记