用户工具

站点工具


java:jvm

JVM内存调优

java -XX:+PrintFlagsFinal -version,参数默认值
jps -lvm,查看java进程
jinfo -flags pid,查看jvm参数
jstat -gc pid,查看GC次数
jmap -heap pid,查看堆内存情况
jcmd pid GC.run,强制gc
ps Hp pid|wc -l,查看线程个数
jstat -gc pid S0C+S1C+EC+OC+MC+CCSC 236m 78m 50m
S0C 幸存区1容量k 10240.0 10m 2.375m 1.25m
S1U 幸存区2已用k survivor 10m 2.375m 1.25m
EC 年轻代容量k Eden 80m 19.25m 10.56m
OU 老年代已用k Old 96m 24m 13m
MC 元数据 Metaspace 36.5m 26.25m 21m
CCSU 代码区 Class Cache 4.25m 3m 3m
YGC 年轻代gc次数 YGCT 年轻代gc耗时(秒) <10ms
FGC 老年代gc次数 FGCT 老年代gc耗时 GCT 总时间

重要指标:线程数,老年代比例,gc平均耗时

  jstack -l 11935|grep "^\""|cut -d "\"" -f 2|sort  //输出线程名称

参数说明

  1. server,服务端模式
  2. Xms256m -Xmx256m,堆内存大小,默认新生代:老年代=1:2,-XX:NewRatio=2
  3. XX:NewSize=100m -XX:MaxNewSize=100m,新生代=伊甸园8+幸存区1×2,默认伊甸园:幸存区=8:1,-XX:SurvivorRatio=8
  4. XX:PermSize=128m -XX:MaxPermSize=128m,永生代(非堆),Java8+使用-XX:MetaspaceSize、-XX:MaxMetaspaceSize
  5. Xss228k,堆栈大小
  6. Djava.awt.headless=true,

1C1G

Xmx="488m"
Xmn="120m"
SR="10"
MTT="36"
PM="68m"
Xss="228k"
JAVA_OPTS="-server -Xms$Xmx -Xmx$Xmx -Xmn$Xmn -XX:SurvivorRatio=$SR -XX:MaxTenuringThreshold=$MTT -XX:PermSize=$PM -XX:MaxPermSize=$PM -Xss$Xss -Djava.awt.headless=true"

2C4G

  -server -Xms1536m -Xmx1536m -Xmn512m -XX:SurvivorRatio=10 -XX:PermSize=96m -XX:MaxPermSize=96m -Xss228k -XX:+UseBiasedLocking -XX:+UseParNewGC -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:ParallelGCThreads=2 -Djava.awt.headless=true
java/jvm.txt · 最后更改: 2019/12/31 23:31 由 admin