以下是物理内存为16G的建议配置:

export JAVA_OPTS="-server -Xms4096m -Xmx4096m -Xss256k -XX:PermSize=256m -XX:MaxPermSize=4096m -XX:NewSize=512m -XX:MaxNewSize=2048m -XX:+DisableExplicitGC -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"

项目 参考值 说明
-server Tomcat以server模式运行,将拥有更大、更高的并发处理能力,更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量,生产环境必须加上。
-Xms 4096m 推荐为可用内存的1/4的80%~100%,16G内存,配置为4G
-Xmx 4096m -Xms –Xmx 一般的要将-Xms和-Xmx选项设置为相同堆内存分配 (访问量比较大时设为一致)
-Xss 256k 指设定每个线程的堆栈大小 一般是128k或者256k(这个值注意默值512K,有时会出现这个过小,tomcat起不来情况。所有根据的项目设置,反正越小越好)
-Xmn 256m 一般来说, -Xmn128-256m就够了
-XX:PermSize 256m 非堆的初始值[物理内存的1/64]
-XX:MaxPermSize 4096m 非堆的最大值[物理内存的1/4]
-XX:NewSize 512m
-XX:MaxNewSize 2048m
-XX:+DisableExplicitGC 程序代码中不允许有显示的调用”System.gc()”
-XX:+AggressiveOpts 启用这个参数,则每当JDK版本升级时,你的JVM都会使用最新加入的优化技术(如果有的话)
-XX:+UseBiasedLocking 启用一个优化了的线程锁,我们知道在我们的
-XX:MaxTenuringThreshold 31 设置垃圾最大年龄
-XX:+UseConcMarkSweepGC 即CMS gc 我们知道频频繁的GC会造面JVM的大起大落从而影响到系统的效率,因此使用了CMS GC后可以在GC次数增多的情况下,每次GC的响应时间却很短,比如说使用了CMS GC后经过jprofiler的观察,GC被触发次数非常多,而每次GC耗时仅为几毫秒。
-XX:+CMSParallelRemarkEnabled 在使用UseParNewGC 的情况下, 尽量减少 mark 的时间
-XX:+UseCMSCompactAtFullCollection 在使用concurrent gc 的情况下, 防止 memoryfragmention, 对live object 进行整理, 使memory 碎片减少
-XX:LargePageSizeInBytes 128m 指定 Java heap的分页页面大小
-XX:+UseFastAccessorMethods get,set方法转成本地代码
-XX:+UseCMSInitiatingOccupancyOnly
-Djava.awt.headless true
nn > 原文地址:https://blog.csdn.net/zhaofuqiangmycomm/article/details/82142910?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168904455816800211547306%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168904455816800211547306&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-11-82142910-null-null.142^v88^control_2,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96