jdk1.6版本的tomcat,JVM配置说明

1、服务器配置:

cpu 为16核心,内存为47G的配置

2、JVM的配置如下:

export JAVA_OPTS="-server -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Xms25600m -Xmx25600m -Xss2m -XX:NewSize=2048m -XX:MaxNewSize=2048m -XX:PermSize=640m -XX:MaxPermSize=1200m -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+DisableExplicitGC -XX:ParallelGCThreads=15 -XX:+UseCompressedOops -Djava.awt.headless=true -Dsun.java2d.dpiaware=false -Dsun.java2d.noddraw=true -Dsun.java2d.opengl=True -Djava.awt.image.rendering=priority -XX:NewRatio=3 -XX:SurvivorRatio=5 -XX:MaxDirectMemorySize=25600m -XX:MaxTenuringThreshold=8 -Djava.security.egd=file:/dev/urandom"

3、配置说明--------通义灵码解说

你给出的JVM配置针对的是一个具有16核CPU和47GB RAM的服务器,运行在JDK 1.6上。下面是对你配置的分析和建议:

堆内存大小:

你设置了-Xms25600m和-Xmx25600m,意味着JVM堆的初始大小和最大大小均为25GB。考虑到服务器有47GB的RAM,这个设置是合理的,为应用提供了充足的内存空间。然而,是否最优取决于应用的实际内存需求和行为。

线程栈大小:

你将-Xss设置为2MB。这个值对于大多数应用来说偏大,通常线程栈大小设置为1MB或更小。如果应用不需要这么大的线程栈,可以考虑减小这个值,以节省内存。

年轻代大小:

XX:NewSize=2048m和XX:MaxNewSize=2048m设定了年轻代的大小为2GB。对于25GB的总堆,这个比例看起来合理,但具体是否足够取决于应用产生的短期对象的数量和生命周期。

永久代大小:

XX:PermSize=640m和XX:MaxPermSize=1200m设定了永久代的大小。在JDK 1.6中,永久代用于存储类元数据。如果应用加载了大量类,可能需要更大的永久代。

垃圾收集器:

你启用了-XX:+UseParallelGC和-XX:+UseParallelOldGC,这将使用并行垃圾收集器。对于多核CPU,这通常是最佳选择,因为它能有效利用多核优势进行垃圾收集。

并行GC线程数:

你设置了-XX:ParallelGCThreads=15。对于16核的CPU,这个值接近于最大值,可以充分利用CPU资源进行垃圾收集。但是,如果发现CPU使用率过高或应用响应时间受影响,可以考虑稍微减少这个值。

其他配置:

XX:NewRatio=3设定了老年代与年轻代的大小比例。

XX:SurvivorRatio=5设定了Survivor区与Eden区的大小比例。

XX:MaxDirectMemorySize=25600m设定了直接内存的最大大小,这取决于应用对NIO缓冲区的需求。

XX:MaxTenuringThreshold=8设定了对象在年轻代中存活的次数阈值。

总体而言,你的配置看起来是经过深思熟虑的,特别是对于JDK 1.6和多核CPU的服务器。但是,是否真正"合理"还要看应用的实际情况。建议在生产部署前,先在测试环境中运行并监控应用的性能,包括GC行为、内存使用情况和CPU使用率,以确保配置满足应用的性能需求。如果有必要,根据监控结果进行适当的调整。例如,如果发现年轻代的大小不足以应对短生命周期对象的生成速率,可能需要增加年轻代的大小;如果永久代经常接近满载,可能需要增加MaxPermSize的值

相关推荐
毕设源码-赖学姐14 分钟前
【开题答辩全过程】以 基于Android的校园快递互助APP为例,包含答辩的问题和答案
java·eclipse
damo0117 分钟前
stripe 支付对接
java·stripe
麦麦鸡腿堡1 小时前
Java的单例设计模式-饿汉式
java·开发语言·设计模式
假客套1 小时前
Request method ‘POST‘ not supported,问题分析和解决
java
傻童:CPU1 小时前
C语言需要掌握的基础知识点之前缀和
java·c语言·算法
爱吃山竹的大肚肚1 小时前
@Valid校验 -(Spring 默认不支持直接校验 List<@Valid Entity>,需用包装类或手动校验。)
java·开发语言
雨夜之寂2 小时前
mcp java实战 第一章-第一节-MCP协议简介.md
java·后端
皮皮林5512 小时前
蚂蚁又开源了一个顶级 Java 项目!
java
吹晚风吧3 小时前
spring是如何解决循环依赖的(二级缓存不行吗)?
java·spring·循环依赖·三级缓存
九丶弟3 小时前
SpringBoot的cache使用说明
java·spring boot·spring·cache