Jvm参数学习

Jvm参数学习

ID:41028423

大小:32.64 KB

页数:7页

时间:2019-08-14

Jvm参数学习_第1页
Jvm参数学习_第2页
Jvm参数学习_第3页
Jvm参数学习_第4页
Jvm参数学习_第5页
资源描述:

《Jvm参数学习》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Jvm参数学习,代码性能调优1JVM性能调优的重点JVM的性能调优的重点是垃圾回收和内存管理。垃圾回收的时候会导致整个虚拟机暂停服务,因此,应该尽可能地缩短垃圾回收的处理时间。另外需要关注以下几个方面:1.1并发用户,在服务请求失败或请求响应超过预期时间之前,系统支持的最大并发用户数量。1.2系统容量,可以用每秒处理的事务数量计算。1.3可靠性,即长时间提供不会中断的服务。2性能参数下面列出了一些对内存和GC的性能影响比较大的参数含义说明-XmsHeap的最小尺寸-XmxHeap的最大尺寸作为一个通行的准则

2、,设置Xms和Xmx的尺寸一样,以减少gc的次数。要将它们设置足够大,否则就会产生outofmemory错误,但又不能设置过大,过大会增加gc的工作时间。-Xmnnew的尺寸-XX:PermSizePerm的最小尺寸-XX:MaxPermSizePerm的最大尺寸类似heap的设置,应该将perm设置为固定尺寸,即最大和最小尺寸一样。-XX:SurvivorRatioNew区中eden与Survivor区的比值-XX:+UseParallelGC使用parallelgc-XX:ParallelGCThrea

3、dsParallelgc的线程个数与cpu个数相同,使得所有cpu都参与gc工作。3性能参数调优方法要调整参数首先要观察它们,观察JVM内存和gc的工具有很多,这里用到JDK自带工具jps和jstat,jps用来查看JVM的进程id(pid),jstat用这个pid作为参数来得到内存和gc的状态,例如:jstat-gcutil234923005其中,23492是的JVM的pid,300是采样间隔,单位是毫秒,即300毫秒采集一次数据,5是采样次数。S0S1EOPYGCYGCTFGCFGCTGCT0011.3

4、95.2913.573281.955327133.126135.0810011.395.2913.573281.955327133.126135.0810011.395.2913.573281.955327133.126135.0810011.395.2913.573281.955327133.126135.0810011.395.2913.573281.955327133.126135.081列标题含义S0SurvivorS1SurvivorEEdenOOldPPermYGCYoung(new)区完成的g

5、c的次数YGCTYGC消耗的总时间(秒)FGC整个heap完成的gc的次数FGCTFGC消耗的总时间(秒)GCTYGCT+FGCT可以将采样次数设置足够大,这样就可以看到内存和gc的变化了。从上述数据可以看出,内存各区域的占用率都不高,gc的执行时间都不长,不过,perm区有些太大,太浪费了。因为perm区的对象与JVM的生命周期是一样的,对象数量不会动态变化,所以,我们可以把这个区域的尺寸设置为原尺寸的二分之一,这样,perm的占用率将从13%左右增加到26%左右。从上述数据还可以看出,new区的gc明显

6、比heap的gc快得多。通常FGC应该不超过400毫秒,否则将严重影响java应用的正常运行。1内存引起的异常及解决方法1.1java.lang.OutOfMemoryError:Javaheapspace原因:Heap内存溢出,意味着Young和Oldgeneration的内存不够。解决:调整java启动参数-Xms-Xmx来增加Heap内存1.2java.lang.OutOfMemoryError:unabletocreatenewnativethread原因:Stack空间不足以创建额外的线程,要么是

7、创建的线程过多,要么是Stack空间确实小了。解决:由于JVM没有提供参数设置总的stack空间大小,但可以设置单个线程栈的大小;而系统的用户空间一共是3G,除了Text/Data/BSS/MemoryMapping几个段之外,Heap和Stack空间的总量有限,是此消彼长的。因此遇到这个错误,可以通过两个途径解决:1.通过-Xss启动参数减少单个线程栈大小,这样便能开更多线程(当然不能太小,太小会出现StackOverflowError);2.通过-Xms-Xmx两参数减少Heap大小,将内存让给Stac

8、k(前提是保证Heap空间够用)。1.1java.lang.OutOfMemoryError:PermGenspace原因:PermanentGeneration空间不足,不能加载额外的类。解决:调整-XX:PermSize=-XX:MaxPermSize=两个参数来增大PermGen内存。一般情况下,这两个参数不要手动设置,只要设置-Xmx足够大即可,JVM会自行选择合适的PermGen大小。1.2java.l

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。