Spring之JVM性能参数优化
JVM 调优的基本原则
大多数的 Java 应用不需要进行 JVM 优化;
大多数导致 GC 问题的原因是代码层面的问题(代码层面);
上线之前,应先考虑将机器的 JVM 参数设置到最优;
减少创建对象的数量(代码层面);
减少使用全局变量和大对象(代码层面);
优先架构调优和代码调优,JVM 优化是不得已的手段(代码、架构层面);
分析 GC 情况优化代码比优化 JVM 参数更好(代码层面)。
JVM参数
JVM 的 -XX 参数被称为不稳定参数,此类参数的设置很容易引起 JVM 性能上的差异,使 JVM 存在极大的不稳定性。如果此类参数设置合理将大大提高 JVM 的性能及稳定性。
1 | 常见运行参数解析: |
可调优参数:
1 | -Xms:初始化堆内存大小,默认为物理内存的 1/64 (小于 1GB)。 |
JVM参数调优
Tomcat 本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个 java 虚拟机。JAVA 程序启动时 JVM 都会分配一个初始内存和最大内存给这个应用程序。这个初始内存和最大内存在一定程度上会影响程序的性能。比如说在应用程序用到最大内存的时候,JVM 是要先去做垃圾回收的动作,释放被占用的一些内存。所以想调整 Tomcat 的启动时初始内存和最大内存就需要向 JVM 声明,一般的 JAVA 程序在运行时都可以通过 -Xms -Xmx 来调整应用程序的初始内存和最大内存。
一般增加Xms、Xmx和Xmn参数即可。
4核8G内存服务,JVM参数配置建议值:
1 | 默认空余堆内存小于 40% 时,JVM 就会增大堆直到 -Xmx 的最大限制;空余堆内存大于 70% 时,JVM 会减少堆直到 -Xms 的最小限制。因此服务器一般设置 -Xms 和 -Xmx 相等以避免在每次 GC 后调整堆的大小。 |