- jvm调优原因 — 为什么要进行jvm调优!(海恩法则,墨菲定律)
- jvm调优原理 — 垃圾回收算法,如何进行调优
- jvm调优实战 — 设置jvm调优参数,根据这些参数压力测试
- jvm调优gc日志,根据日志情况,对服务进行再次调优
1 为什么要进行JVM调优?
思考1: 项目上线后,什么原因使得我们需要进行jvm调优
- 垃圾太多(java线程,对象占满内存),内存占满了,程序跑不动了!!
- 垃圾回收线程太多,频繁的回收垃圾(垃圾回收线程本身也会占用资源: 占用内存,cpu资源),导致程序性能下降
- 回收垃圾频繁导致STW
因此基于以上的原因,程序上线后,必须进行调优,否则程序性能就无法提升;也就是程序上线后,必须设置合理的垃圾回收策略;
思考2: jvm调优的本质是什么??
答案: 回收垃圾,及时回收没有用垃圾对象,及时释放掉内存空间
思考3: 基于服务器环境,jvm堆内存到底应用设置多少内存?
-
32位的操作系统 — 寻址能力 2^32 = 4GB ,最大的能支持4gb; jvm可以分配 2g+
-
64位的操作系统 — 寻址能力 2^64 = 16384PB , 高性能计算机(IBM Z unix 128G 200+)
jvm堆内存不能设置太大,否则会导致寻址垃圾的时间过长,也就是导致整个程序STW, 也不能设置太小,否则会导致回收垃圾过于频繁;
整理了一些文档笔记。 也还整理了一些面试资料&最新2020收集的一些大厂的面试真题(都整理成文档,小部分截图),有需要的请点这里、这里,暗号:CSDN。
整理了一些文档笔记。 也还整理了一些面试资料&最新2020收集的一些大厂的面试真题(都整理成文档,小部分截图),有需要的请点这里、这里,暗号:CSDN。
2 JVM调优原则
-
gc时间足够小 (堆内存设置要足够小)
-
gc次数足够少 (堆内存设置足够大)---- 垃圾装满了(很长时间才能装满空间),才开始回收垃圾