吞吐量:用户代码时间/(用户代码时间 + 垃圾回收时间)
响应时间:STW越短,响应时间越好
调优追求的是什么?吞吐量优先还是响应时间优先,还是在满足一定响应时间的情况下,达到多大的吞吐量。
科学计算,吞吐量
什么是调优?
- 根据需求进行JVM规划和预调优
- 优化JVM运行环境(慢、卡顿)
- 解决JVM运行过程中的各种问题,如OOM
-
JVM调优其实就是尽量减少Full GC次数和时间。
Full GC会导致STW(stop the world),Java所有线程挂起,,用户就会有卡顿的感觉。
minor GC也会导致STW,但是时间很短对程序运行影响较小。而Full GC时间较长,一般比minor GC
慢10倍以上,应该尽量避免。
一般生产环境中,几天才会触发一次FGC,甚至一周。 -
在jvm参数中配置,可以打印GC日志
-XX:+PrintGCDetails
-Xloggc:/{path}/gc.log参数总结:
-XX:+PrintGC 输出GC日志
-XX:+PrintGCDetails 输出GC的详细日志
-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在进行GC的前后打印出