JVM内存诊断方法和工具.docx

上传人:太** 文档编号:72227712 上传时间:2023-02-09 格式:DOCX 页数:4 大小:57.29KB
返回 下载 相关 举报
JVM内存诊断方法和工具.docx_第1页
第1页 / 共4页
JVM内存诊断方法和工具.docx_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《JVM内存诊断方法和工具.docx》由会员分享,可在线阅读,更多相关《JVM内存诊断方法和工具.docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、现状:系统运行一段时间后,速度开头变慢,而且越来越严峻;诊断:疑心存在内存泄露,导致Full GC过于频繁,使得系统中断次数越来越多; 处理方法:1.在JVM中增加GC输出,在tomcat/bin/catalina.sh中增加如下设置JAVA_OPTS= 41024K(1047552K)1324184K-400132K(3144704K),0.2424250 secs Times: user=1.92 sys=0.00, real=0.24 secsHeap after GC invocations=35 (full 2):PSYoungGentotal 1047552K, used 1024

2、K 0xb42a0000, 0xf42a0000z0xf42a0000) eden space 1046528K, 0% used 0xb42a0000,0xb42a0000,0xf40a0000) from space 1024K, 100% used (0xf40a0000,0xf41a0000,0xf41a0000) to space 1024K, 0% used 0xf41a0000,0xf41a0000,0xf42a0000)PSOIdGentotal 2097152K, used 399108K 0x342a0000, 0xb42a0000,0xb42a0000)object sp

3、ace 2097152K, 19% used (0x342a0000/0x4c861010/0xb42a0000)PSPermGentotal 65536K, used 21366K 0xl42a0000, 0xl82a0000,0x342a0000) object space 65536K, 32% used 0xl42a0000,0xl577d920z0xl82a0000) ) JVM HEAP的构造如F:Heap Structure of HotSpot VMOld GenerationPermanent SpacePermanent GenerationGC有两种:minor GC:对

4、于生成的对象,都放在Eden中;当Eden布满时(小孩太多了),GC将开 头工作,首先停顿应用程序的运行,开头收集垃圾,把全部可找到的对象都复制到old空间 中;full GC:当old满了,触发full GC。full GC很消耗内存,把old, young里面大局部垃圾 回收掉。这个时候用户线程都会被blocko通过jmap命令也可以查看JVM当前的heap使用状况:jm叩-he叩 4306Attaching to process ID 4306, please wait.Debugger attached successfully.Server compiler detected.JVM

5、 version is 16.3-b01using thread-local object allocation.Parallel GC with 8 threadHeap Configuration:MinHeapFreeRatio = 40MaxHeapFreeRatio = 70MaxHeapSizeNewSizeMaxNewSizeOldSizeNewRatioSurvivorRatio =PermSize=3221225472 (3072.0MB)= 4194304 (4.0MB)=4294901760 (4095.9375MB)=4194304 (4.0MB)=21000=6710

6、8864 (64.0MB)MaxPermSizeMaxPermSize=536870912 (512.0MB)Heap Usage:PS Young GenerationEden Space:capacity = 1071644672 (1022.0MB)used = 662329344 (631.646484375MB)free = 409315328 (390.353515625MB)61.80493976272023% usedFrom Space:capacity = 1048576 (1.0MB)used = 1048576 (1.0MB)free = 0 (0.0MB)100.0%

7、 usedTo Space:capacity = 1048576 (1.0MB)used = 0 (0.0MB)free = 1048576 (1.0MB)0.0% usedPS Old Generationcapacity = 2147483648 (2048.0MB)used = 713975824 (680.9004058837891MB)free = 1433507824 (1367.099594116211MB)33.24709013104439% usedPS Perm Generationcapacity = 67108864 (64.0MB)used = 21879232 (2

8、0.86566162109375MB)32.602596282958984% usedMinor GC时间较短,对性能影响有限,假设觉察较为频繁,可通过NewRatio来把握new 空间的大小。Full GC比较耗时,对系统影响较大。假设觉察几次Full GC后,内存使用 没有降下来,则有可能存在内存泄露:cat gc.log | grep Full GC2581.257:Full GC PSYoungGen: 640K-0K(589248K) PSOIdGen:664345K-207093K(699072K)J664985K-207093K(1288320K)PSPermGen:30828K

9、-30828K(131072K), 1.2023230 secs Times: user=1.19 sys=0.01, real=1.20 secs2929.640:Full GC PSYoungGen: 64K-0K(645824K) PSOIdGen:676059K-185422K(699072K)l676123K-185422K(1344896K)PSPermGen:30962K-30962K(131072K)/ 1.0784410 secs Times: user=1.08 sys=O.OO, real=1.07 secs3465.263:(Full GC (PSYoungGen: 6

10、40K-0K(564096K) (PSOIdGen:676009K-208685K(699072K)676649K-208685K(1263168K)PSPermGen:30985K-30985K(131072K)L 1.2440760 secs Times: user=1.24 sys=O.OO, real=1.24 secs3765.206:Full GC PSYoungGen: 640K-0K(387648K) PSOIdGen:656238K-260889K(725952K)656878K-260889K(1113600K)PSPermGen:31005K-30805K(131072K

11、), 1.7598360 secs Times: user=1.76 sys=0.00, real=1.76 secs4006.283:Full GC PSYoungGen: 640K-0K(549568K) PSOIdGen:641960K-418960K(905152K)642600K-418960K(1454720K)PSPermGen:30818K-30818K(131072K)L 2.3026830 secs Times: user=2.30 sys=0.00, real=2.30 secs4545.212:Full GC PSYoungGen: 640K-0K(472023K) P

12、SOIdGen:879051K-207236K(699072K)879691K-207236K(1171072K)(PSPermGen:30854K-30854K(131072K), 1.2098150 secs Times: user=1.19 sys=0.02, real=1.21 secs 6052.607:Full GC PSYoungGen:64K-0K(573568K)J PSOIdGen:682860K-155937K(699072K)682924K-155937K(1272640K)(PSPermGen:30890K-30890K(131072K), 0.8968940 sec

13、s Times: user=0.89 sys=0.00, real=0.90 secs.确诊了系统存在内存泄露,还需要确定其泄露的位置。HP Diagnostics是一个比较好用的 工具,可以诊断出执行时间较长和频繁的sqk执行时间较长的方法,还可以跟踪内存 的使用状况以及对象的数量。(之前有使用过Jprofiler,不过感觉加上后tomcat格外慢, 不知道现在性能怎样)英 1子itJR:。m mGtcury.apachabcel. claesfile LooaIVsruble964302:orn meicuiy spache bcfl clas由Ie LocaMriahl叫2,46494;

14、om mercury.apache.bcel.classfile LocalVahableTakle3 0094:om mtrcuty.QpachQ.bcol. clacsfilo Molhod7 1328229:om moiciny apacM bi el ganetlc ALOAD44,rO4meicuiy.apache.ocel. geiieiic ASHORE3沏140mGicuiy.Gpachc ocol qoronc MPUiH76.1044附4orn rrn iny xpacl* rii H jwt*由 RuirhHxr iliw%,渤FOA;om meicuiy.ai)che.

15、bcel. oeneiic Cor 31 am Poo 10 en Blade xMW2.14C:om mQicuiy.QpacliQ.bcol. gonoilc DSTURb14862:onr)men uty apache b( el gietlc GETSTATIC3,必R216;de mere uiy. apache, be el getieiic COTO6投0205mQicury.opacho.bcol. gonoilc IF_ICMPWEI网46:orn rrieicuiy.apacMgwieiic IF EQ1877meicufy.apacPie.ocel. getieiic I

16、FNZ1S12G3:om mGicuij.apaclG.ocol. qotiGiic IINC2,17668:om mpicuty apachw bcpl gswiic II GAD95声63,994设置步骤如下:a.在tomcat所在机器安装Hp Diagnostics,安装时选择仅作为Diagnostics分析器使用b.在 tomcat 中加入如下设置: JAVA_OPTS= $JAVA_OPTS -javaagent:/opt/MercuryDiagnostics/JavaAgent/DiagnosticsAgent/lib/probeagent.jar-agentpath:/opt/M

17、ercuryDiagnostics/JavaAgent/DiagnosticsAgent/lib/x86-linux64/libjvm ti.so,这样在tomcat启动后会自动翻开35000端口c.在客户端使用客户端软件HP Java Agent或者使用java web start方式,直接在扫瞄器 中输入:server:35000即可连接通过分析对象的数量,特别是在进展一些业务操作后,暂停使用,然后执行Full GC后的对 象数量,确定特别对象的数量。所以需要对内部的规律有确定的了解,否则很难确定对 象的数量存在特别。2 .假设能确定到内存泄露的对象,还需要确认是哪个地方引用了这些对象,以

18、至于无法释 放。通常需要留意的地方时一些Map、ThreadLocak静态变量等,web应用中还需要留 意session或者application中是否存在没有去除的数据。分析代码是一种方式,但是很多时候可能很难从代码中定位。JVM自带的工具jmap在 这个时候可以派上大用场。使用如下命令可以生成dump信息:jmap -dumpdive,format=b,file=heap20230114.bin 3624Dumping heap to /var/log/heap20230114.bin .Heap dump file created然后使用jhat查看dump信息:jhat -J-mxl0

19、24m heap_snapshot.binReading from heap.bin.Dump file created Fri Dec 31 09:30:54 CST 2023Snapshot read, resolving.Resolving 2474879 objects.Chasingreferences,expect494dotsEliminatingduplicatereferencesSnapshot resolved.Started server on port 7000Server is ready.访问:sen/er:7Q。,可以查看全部对象的相互引用状况,确认什么地方引用了该对象。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁