dev

Java Basics - JVM Optimization

/note-bak/dev/java/jvm-tuning/

Application Performance Optimization

  • 应用优化
  • 数据库优化
  • 框架优化
  • JVM优化

从上到下,最后才考虑JVM优化。

Scenarios

  • CPU使用暴涨
  • 内存使用暴涨,使用大量本地内存,OOM
  • 频繁FullGC,停顿时间大于1s

Goals: Pick 2 of 3

  • 高吞吐量
  • 低延迟:GC低停顿和GC低频率
  • 低内存占用:因为我们不希望总是打满100%内存,留有一些空间给突发情况

Steps

  • 收集数据:实时监控(shell cmd, jdk cmd),事后分析(log + dump)
  • 确定目标:内存使用率,停顿时间,回收评率
  • 调优与测试:不断微调
  • 后续跟踪

JDK Tools

  • jps:check running java process
  • jinfo:check java run cmd
  • jvisualvm: check memory, cpu, gc, dump stack and heap
  • jstat: check gc info with -gcutil
  • jstack: check stack thread
  • jmap: check heap memory or dump the heap with -histo:live

Linux Tools

  • top
  • free

GC Selection

  • CPU单核,Serial
  • CPU多核,吞吐两,PS + PO
  • CPU多合,停顿时间,CMS / G1

References