项目的JVM堆内存大小如何设置
堆的最大值和最小值分别是Xmx和Xms指定的。一般在生产环境中,把这两个值设为同样大。使JVM进程在一启动的时候,就获得足够大小的存储空间。
需要根据你的业务量设置,并不是越大越好,设置大了会增加GC时间,因为堆内存越大,垃圾回收频率就低,但是一旦垃圾回收,需要的时间就越多。
# 1、Tomcat的参数
tomcat的/bin/catalina.sh
是启动的文件,可以看到这个默认的配置文件,是没有设置堆大小的。
如果要设置,可以在这个文件修改
JAVA_OPTS
参数即可。
- 堆内存初始值分配:
-Xms
,默认是物理内存的1/64; - 堆内存最大值分配:
-Xmx
,默认是物理内存的1/4。
默认空余堆内存小于40%
时,JVM就会增大堆直到-Xmx
的最大限制;空余堆内存大于70%
时,JVM会减少堆直到-Xms
的最小限制。因此服务器一般设置-Xms
、-Xmx
相等,以避免在每次GC 后调整堆的大小。
一般项目中,都不需要调整很多参数进行调优,现在的JVM在GC这方面还是做的很好的。
如何监测业务的GC情况,可以使用JProfiler 这个软件。
所以总结就是,堆内存大小的设定需要根据不同的业务而定。
上次更新: 2024-05-23 10:33:15