JVM(6)—JVM优化

JVM(6)—JVM优化

JVM优化建议

  1. 大多数情况JVM生产环境考虑调整:
    • 初始堆和最大堆大小
    • 选择什么GC收集器
    • 新生代大小
  2. 要先全面监控、收集性能数据,再调优。
  3. 大部分都是自己写的代码出现问题,而不是JVM参数不对。
  4. 可以通过Arthas 进行线上问题定位处理。

JVM优化选项

  1. jdk1.8+优先使用G1收集器,摆脱各种选项烦恼。 -XX:+UseG1GC
  2. 设置初始堆和最大堆大小并且相同,减少内存交换。 -Xms2G -Xmx2G
  3. 评估Xmx方法:第一次起始设置大点,根据跟踪监控日志,调整为堆峰值*2-3倍即可。
  4. 可以设置G1最大STW时间,200~500ms区间,增加可以减少GC次数,提高吞吐量。 -XX:MaxGCPauseMillis=300
  5. 设置栈内存大小,一般128k或者256k就行了,每一个线程都会分配对应的栈内存。 -Xss256k
  6. G1一般不设置新生代大小,新生代大小是动态调整的。
java -jar -XX:+UseG1GC -Xms2G -Xmx2G -Xss256k -XX:MaxGCPauseMillis=300 test.jar

JVM监控命令

  1. jps:查看java进程pid。jps
  2. jinfo:查看jvm环境与参数。 jinfo 8100
  3. jstat:查看jvm内存以及GC状态。 jstat -gcutil 8100 1000 10(每隔一秒输出1次,一共输出10次)
  4. jstack:查看各线程调用方法堆栈。 jstack -l 8100
  5. jmap:生成堆dump文件。 jmap -dump:live,format=b,file=dumo.hprof 8100
  6. jhat:dump分析工具。 jhat dump.hprof
posted @ 2020-08-25 20:22  Baby丿太依赖  阅读(157)  评论(0)    收藏  举报