网站大量收购闲置独家精品文档,联系QQ:2885784924

Tomcat中Java垃圾收集调优.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Tomcat中Java垃圾收集调优1 JVM内存JAVA_OPTS参数说明设置服务器端的JVMcatalina.bat文件中:JAVA_OPTS=-server -Xms2048m -Xmx2048m -Xss512k JVM中对象的划分及管理 JVM根据运行于其中的对象的生存时间大致的分为3种。并且将这3种不同的对象分别存放在JVM从系统分配到的不同的内存空间。这种对象存放空间的管理方式叫做Generation管理方式。1). Young Generation(年轻代:用于存放“早逝”对象(即瞬时对象)。例如:在创建对象时或者调用方法时使用的临时对象或局部变量。2). Tenured Generation(年老代:用于存放“驻留”对象(即较长时间被引用的对象)。往往体现为一个大型程序中的全局对象或长时间被使用的对象。3). Perm Generation(永久保存区域:用于存放“永久”对象。这些对象管理着运行于JVM中的类和方法。 在命令行下用 java -XmxXXXXM -version 命令来测试,逐渐增大XXXX的值,如果执行正常就表示指定的内存大小可用,否则会打印错误信息。垃圾收集分类 在JVM中有两种垃圾方式一种叫做Minor(次收集)。Minor在Young Generation年轻代的空间被对象全部占用后执行,主要是对Young Generation中的对象进行垃圾收集。一种叫做Major(主收集)。Major是针对于整个Heap size永久保存区域的垃圾收集。其中Minor方式的收集经常发生,并且Minor收集所占用的系统时间小。Major方式的垃圾收集则是一种“昂贵”的垃圾收集方式,因为在Major要对整个Heap size进行垃圾收集,这会使得应用停顿的时间变得较长。Tomcat运行占用内存= Xmx占用的内存 + Perm Generation(永久保存区域Java应用创建线程Java应用每创建一个线程,在JVM的内存里也会创建一个Thread对象,但是同时也会在操作系统里创建一个真正的物理线程(参考JVM规范),操作系统会在余下的内存里创建这个物理线程,而不是在JVM的Xmx的内存堆里创建。在jdk1.4里头,默认的栈大小是256KB,但是在jdk1.5里头,默认的栈大小为1M每线程此,400M的可用内存Java应用最多创建400个可用线程。结论要想创建更多的线程,必须减少分配给JVM的最大内存-server:一定要作为第一个参数,在多个CPU时性能佳 -Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些 -Xmx:java heap最大值,使用的最大内存 上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半最大不要超过可用物理内存的80%。 -Xmn:young generation年轻代的heap大小,一般设置为Xmx的3、4分之一此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8可使用-XX:NewSize和-XX:MaxNewsize设置年轻代的初始值和最大值-Xincgc :启动增量垃圾收集器,缺省是关闭的。增量垃圾收集器能减少偶然发生的长时间的垃圾回收造成的暂停时间。但增量垃圾收集器和应用程序并发执行,因此会占用部分CPU在应用程序上的功能。CMSInitiatingOccupancyFraction=70 发现引起promotion failed错误的原因是CMS来不及回收(CMS默认在年老代占到90%左右才会执行),年老代又没有足够的空间供GC把一些活的对象从年轻代移到年老代,所以执行Full GC。CMSInitiatingOccupancyFraction=70表示年老代占到约70%时就开始执行CMS,这样就不会出现Full GC了。参数设置有很大技巧,基本上满足(Xmx-Xmn)*(100- CMSInitiatingOccupancyFraction)/100=Xmn就不会出现promotion failed。在应用中Xmx(最大内存)是00m,Xmn年轻代是0m,那么Xmx-Xmn是0m,也就是年老代有0 兆,CMSInitiatingOccupancyFraction=0说明年老代到0%满的时候开始执行对年老代的并发垃圾回收(CMS),这时还剩0%的空间是0*30%=348兆,所以即使Xmn(也就是年轻代共兆)里所有对象都搬到年老代里,兆的空间也足够了,所以只要满足上面的公式,就不会出现垃圾回收时的promotion failed-XX:PermSize= xxxm:设定内存的永久保存区域-XX:MaxPermSize=xxxm:设定最大内存的永久保存区域 PermSize和MaxPermSize指明

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档