JVM性能优化下:
jvm调优的本质:
并不是显著提高系统的性能,不是说你调了,性能能提升几倍或者上百倍,jvm调优主要调的是稳定
GC调优原则:
1.大多数java应用不需要调优
2.大部分需要GC调优的,不是参数的问题,是代码的问题
3.在实际使用中,分析GC情况优化代码比优化GC参数多的多
4.GC调优是最后的手段
目的:
GC的时间够少
GC的次数够少
发生Full GC的周期足够长,时间合理,最好是不发生
注:如果满足下面的指标,则一般不需要GC
Minor GC执行时间不到50ms
Minor GC执行不频繁,约10秒一次
Full GC 执行时间不到1S
Full GC 执行频率不算频繁,不低于10分钟一次
GC调优步骤:
日志分析
关注Minor GC 和Full GC 的回收频率,回收时间
可以使用Jmeter 进行数据的压测
G1回收器还是挺给力的
逃逸分析:
如果是逃逸分析出来的对象可以在栈上分配的话,那么该对象的声明周期就跟随线程了,
就不需要垃圾回收,没有逃逸分析-对象都在堆上分配(触发频次GC,加重负担)
常见的性能评价:
一个web应用不是一个鼓孤立的个体,系统每一部分都会影响系统的性能
响应时间
并发数
吞吐量
常用的性能优化手段
避免过早优化
前端优化常用的手段
减少请求次数
使用客户端缓存
启用压缩
资源文件加载顺序,css在上,js在下面
减少cookie传输
CDN加速
反向代理缓存
WEB组件分离
应用服务性能优化
缓存
集群