Tomcat优化---jvm优化

Tomcat内存优化,启动时告诉JVM我要一块大内存(调优内存是最直接的方式)

Windows 下的catalina.bat

Linux 下的catalina.sh 如:

JAVA_OPTS=’-Xms256m -Xmx512m’
-Xms JVM初始化堆的大小

-Xmx JVM堆的最大值 实际参数大小根据服务器配置或者项目具体设置:

以下为总结的参考信息:

(1)、-server:启用JDK的server版本,server版本是真正的生产环境,这样可以获得更高的并发,更有效的垃圾回收能力。
(2)、-Xxs:Java虚拟机初始化时堆的最小内存,
-Xmx:Java虚拟机可以使用堆的最大内存
通常Xxs和Xms 通常设置相同的参数,以减少cpu对内存资源的调度,避免CPU高速运转进行垃圾回收
(3)、-Xx:PermSize: java虚拟机永久代大小。-Xx:PermSize=128M :设置非堆内存初始值,默认是物理内存的1/64;在数据量的很大的文件导出时一定设置,否则会出现内存溢出的错误。
-Xx:MaxPermSize: Java虚拟机永久代最大值。Xx:MaxPermSize=256M:设置最大非堆内存的大小,默认是物理内存的1/4。
如果是物理内存4GB,那么64分之一就是64MB,这就是PermSize默认值,也就是永生代内存初始大小;四分之一是1024MB,这就是MaxPermSize默认大小;
(4)、-XX:+DisableExplicitGC:在程序代码中不允许有显示的调用”System.gc()”(忽略手动调用GC, System.gc()的调用就会变成一个空调用,完全不触发GC)。调用System.gc()付出的代价就是系统响应时间严重降低。
(5)、-XX:+UseParNewGC 对年轻代采用多线程并行回收。
(6)、-XX:+UseConcMarkSweepGC 即CMS gc,这一特性只有jdk1.5即后续版本才具有的功能,它使用的是gc估算触发和heap占用触发。我们知道频频繁的GC会造面JVM的大起大落从而影响到系统的效率,因此使用了CMS GC后可以在GC次数增多的情况下,每次GC的响应时间却很短,比如说使用了CMS GC后经过jprofiler的观察,GC被触发次数非常多,而每次GC耗时仅为几毫秒。
(7)、-XX:+CMSParallelRemarkEnabled在使用UseParNewGC 的情况下, 尽量减少mark的时间
(8)、-XX:+UseCMSCompactAtFullCollection在使用concurrent gc 的情况下, 防止 memoryfragmention, 对live object 进行整理, 使 memory 碎片减少。
(9)、-XX:LargePageSizeInBytes指定 Java heap的分页页面大小
(10)、-XX:CMSInitiatingOccupancyFraction=70CMSInitiatingOccupancyFraction,这个参数设置有很大技巧,基本上满足(Xmx-Xmn)(100- CMSInitiatingOccupancyFraction)/100>=Xmn就 不会出现promotion failed。在我的应用中Xmx是6000,Xmn是512,那么Xmx-Xmn是5488兆,也就是年老代有5488 兆,CMSInitiatingOccupancyFraction=90说明年老代到90%满的时候开始执行对年老代的并发垃圾回收(CMS),这时还 剩10%的空间是548810%=548兆,所以即使Xmn(也就是年轻代共512兆)里所有对象都搬到年老代里,548兆的空间也足够了,所以只要满 足上面的公式,就不会出现垃圾回收时的promotion failed,因此这个参数的设置必须与Xmn关联在一起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值