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