tomcat服务器JVM内存调优:
/apache-tomcat-8.5.8/bin/catalina.sh
JAVA_OPTS="-Djava.awt.headless=true
-server -Xms8192m -Xmx8192m
-XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:PermSize=512m
-XX:MaxPermSize=1024m -XX:-UseGCOverheadLimit"
参数说明:
-Djava.awt.headless=true :
-server :一定要作为第一个参数,在多个 CPU 时性能佳,还有一种叫 -client 的模式,特点是启动速度比较快,但运行时性能和内存管理效率不高,通常用于客户端应用程序或开发调试,在 32 位环境下直接运行 Java 程序默认启用该模式。Server 模式的特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境,在具有 64 位能力的 JDK 环境下默认启用该模式,可以不配置该参数。
-Xms8192m:表示 Java 初始化堆的大小,-Xms 与-Xmx 设成一样的值,避免 JVM 反复重新申请内存,导致性能大起大落,默认值为物理内存的 1/64,默认(MinHeapFreeRatio参数可以调整)空余堆内存小于 40% 时,JVM 就会增大堆直到 -Xmx 的最大限制。
-Xmx8192m:表示最大 Java 堆大小,当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃,因此一般建议堆的最大值设置为可用内存的最大值的80%。如何知道我的 JVM 能够使用最大值,使用 java -Xmx512M -version 命令来进行测试,然后逐渐的增大 512 的值,如果执行正常就表示指定的内存大小可用,否则会打印错误信息,默认值为物理内存的 1/4,默认(MinHeapFreeRatio参数可以调整)空余堆内存大于 70% 时,JVM 会减少堆直到-Xms 的最小限制。
-XX:NewSize=1024m:设置新生代内存大小。
-XX:MaxNewSize=1024m:设置最大新生代新生代内存大小
-XX:PermSize=512m:设置持久代内存大小
-XX:-UseGCOverheadLimit:限制GC的运行时间。如果GC耗时过长,就抛OOM。