目录
1.常用的JVM启动参数有哪些

2.设置堆内存XMX应该考虑哪些因素

3.背景描述
# 技术栈
JDK1.8
springboot2.0.2
mysql5.7
docker部署
内存占用2G左右
4.调优目的
私有化场景,并非大型web项目,因此选择低资源消耗 + 吞吐量
- 低资源消耗(内存100M内) √
- 吞吐量 √
- 响应时间 ×
吞吐量 = CPU在用户应用程序运行的时间 / (CPU在用户应用程序运行的时间 + CPU垃圾回收的时间)
FULL GC,串行垃圾回收会使用应用停顿,响应用户时间长
5.垃圾回收器选择
//JDK1.8默认 PS + SerialOld, 手动指定Parallel Scavenge + Parallel Old
-XX:+UseParallelGC = Parallel Scavenge + Parallel Old吞吐量组合
6.调优工具
## 图形工具
JDK自带,此类工具需要远程连接
jvisualvm, jconsole
## 本地查看
top, 阿里arthas, jstat, jmap, jstack, jinf
1. top -p {进程ID}
2. arthas
java -jar arthas-boot.jar {进程ID}
dashboard
java -XX:+PrintFlagsFinal -version |grep GC
java -XX:+PrintCommandLineFlags -version
这两个指令看到的垃圾回收器为 -XX:+UseParallelGC = Parallel Scavenge + Parallel Old (JDK1.8默认 PS + SerialOld)
nohup java -XX:MetaspaceSize=128m \
-XX:MaxMetaspaceSize=128m \
-Xms256m -Xmx256m \
-XX:+UseParallelGC \
-XX:+HeapDumpOnOutOfMemoryError \
-Dfile.encoding=utf-8" \
-jar $JAR_PATH/$JAR_NAME &