1、为什么需要调优?
调优目标:使用较小的内存占用来获得较高的吞吐量或者较低的延迟。
程序在上线前的测试或运行中有时会出现一些大大小小的JVM问题,比如cpu load过高、请求延迟、tps降低等,甚至出现内存泄漏(每次垃圾收集使用的时间越来越长,垃圾收集频率越来越高,每次垃圾收集清理掉的垃圾数据越来越少)、内存溢出导致系统崩溃,因此需要对JVM进行调优,使得程序在正常运行的前提下,获得更高的用户体验和运行效率。
这里有几个比较重要的指标:
-
内存占用:程序正常运行需要的内存大小。
-
延迟:由于垃圾收集而引起的程序停顿时间。
-
吞吐量:用户程序运行时间占用户程序和垃圾收集占用总时间的比值。
当然,和CAP原则一样,同时满足一个程序内存占用小、延迟低、高吞吐量是不可能的,程序的目标不同,调优时所考虑的方向也不同,在调优之前,必须要结合实际场景,有明确的的优化目标,找到性能瓶颈,对瓶颈有针对性的优化,最后进行测试,通过各种监控工具确认调优后的结果是否符合目标。
2、如何调优(包括调优工具)
实质上是对JVM里面核心参数进行合理的设置,从而达到项目需求。
jdk自带调优工具:Jconsole(功能简易)、VisualVM(功能强大)
参考文献:https://zhuanlan.zhihu.com/p/58897189
https://www.cnblogs.com/jay36/p/7680008.html
https://blog.csdn.net/weixin_42447959/article/details/81637909