以下是物理内存为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 |
|
|
|
|