JVM内存诊断方法和工具_第1页
JVM内存诊断方法和工具_第2页
JVM内存诊断方法和工具_第3页
JVM内存诊断方法和工具_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

现状:系统运行一段时间后,速度开头变慢,而且越来越严峻;FullGC过于频繁,使得系统中断次数越来越多;处理方法:在JVM中增加GC输出,在tomcat/bin/catalina.sh中增加如下设置JAVA_OPTS=“$JAVA_OPTS -verbose:gc -Xloggc:/var/log/gc.log -XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+PrintHeapAtGC-XX:+PrintTenuringDistribution“,JVM会自动gc日志,格式如下:{HeapbeforeGCinvocations=35(full2):PSYoungGen total 1047552K, used 1046528K [0xb42a0000, 0xf42a0000,0xf42a0000)edenspace1046528K,100%used[0xb42a0000,0xf40a0000,0xf40a0000)fromspace1024K,0%used[0xf41a0000,0xf41a0000,0xf42a0000)to space1024K,0%used[0xf40a0000,0xf40a0000,0xf41a0000)PSOldGen total2097152K, used 277656K [0x342a0000, 0xb42a0000,0xb42a0000)objectspace2097152K,13%used[0x342a0000,0x451c6000,0xb42a0000)PSPermGen total 65536K, used 21366K [0x142a0000, 0x182a0000,0x342a0000)objectspace65536K,32%used[0x142a0000,0x1577d920,0x182a0000)333342.537:[GCDesiredsurvivorsize1048576bytes,newthreshold1(max15)[PSYoungGen: 1046528K->1024K(1047552K)] 1324184K->400132K(3144704K),0.2424250secs][Times:user=1.92sys=0.00,real=0.24secs]HeapafterGCinvocations=35(full2):PSYoungGen total 1047552K, used 1024K [0xb42a0000, 0xf42a0000,0xf42a0000)edenspace1046528K,0%used[0xb42a0000,0xb42a0000,0xf40a0000)fromspace1024K,100%used[0xf40a0000,0xf41a0000,0xf41a0000)to space1024K,0%used[0xf41a0000,0xf41a0000,0xf42a0000)PSOldGen total2097152K, used 399108K [0x342a0000, 0xb42a0000,0xb42a0000)objectspace2097152K,19%used[0x342a0000,0x4c861010,0xb42a0000)PSPermGen total 65536K, used 21366K [0x142a0000, 0x182a0000,0x342a0000)objectspace65536K,32%used[0x142a0000,0x1577d920,0x182a0000)}JVMHEAP的构造如下:GC有两种:rC:对于生成的对象,都放在n中;当n布满时〔小孩太多了C将old空间中;fullGColdfullGC。fullGCold,young里面大局部垃圾block。jmapJVMheap使用状况:jmap-heap4306AttachingtoprocessID4306,pleasewait...Debuggerattachedsuccessfully.Servercompilerdetected.JVMversionis16.3-b01usingthread-localobjectallocation.ParallelGCwith8thread(s)HeapConfiguration:MinHeapFreeRatio=40MaxHeapFreeRatio=70MaxHeapSize =3221225472(3072.0MB)NewSize =4194304(4.0MB)MaxNewSize =4294901760(4095.9375MB)OldSize =4194304(4.0MB)NewRatio =2SurvivorRatio =1000PermSize =67108864(64.0MB)MaxPermSize =536870912(512.0MB)HeapUsage:PSYoungGenerationEdenSpace:capacity=1071644672(1022.0MB)used =662329344(631.646484375MB)free =409315328(390.353515625MB)61.80493976272023%usedFromSpace:capacity=1048576(1.0MB)used =1048576(1.0MB)free =0(0.0MB)100.0%usedToSpace:capacity=1048576(1.0MB)used =0(0.0MB)free =1048576(1.0MB)0.0%usedPSOldGenerationcapacity=2147483648(2048.0MB)used =713975824(680.9004058837891MB)free =1433507824(1367.099594116211MB)33.24709013104439%usedPSPermGenerationcapacity=67108864(64.0MB)used =21879232(20.86566162109375MB)free =45229632(43.13433837890625MB)32.602596282958984%usedMinorGCNewRatio来把握new空间的大小。FullGC比较耗时,对系统影响较大。假设觉察几次FullGC后,内存使用没有降下来,则有可能存在内存泄露:catgc.log|grep“FullGC“2581.257: [Full GC [PSYoungGen: 640K->0K(589248K)] [PSOldGen:664345K->207093K(699072K)] 664985K->207093K(1288320K) [PSPermGen:30828K->30828K(131072K)],1.2023230secs][Times:user=1.19sys=0.01,real=1.20secs]2929.640: [Full GC [PSYoungGen: 64K->0K(645824K)] [PSOldGen:676059K->185422K(699072K)] 676123K->185422K(1344896K) [PSPermGen:30962K->30962K(131072K)],1.0784410secs][Times:user=1.08sys=0.00,real=1.07secs]3465.263: [Full GC [PSYoungGen: 640K->0K(564096K)] [PSOldGen:676009K->208685K(699072K)] 676649K->208685K(1263168K) [PSPermGen:30985K->30985K(131072K)],1.2440760secs][Times:user=1.24sys=0.00,real=1.24secs]3765.206:[FullGC[PSYoungGen:640K->0K(387648K)][PSOldGen:656238K->260889K(725952K)] 656878K->260889K(1113600K) [PSPermGen:31005K->30805K(131072K)],1.7598360secs][Times:user=1.76sys=0.00,real=1.76secs]4006.283: [Full GC [PSYoungGen: 640K->0K(549568K)] [PSOldGen:641960K->418960K(905152K)] 642600K->418960K(1454720K) [PSPermGen:30818K->30818K(131072K)],2.3026830secs][Times:user=2.30sys=0.00,real=2.30secs]4545.212: [Full GC [PSYoungGen: 640K->0K(472023K)] [PSOldGen:879051K->207236K(699072K)] 879691K->207236K(1171072K) [PSPermGen:30854K->30854K(131072K)],1.2098150secs][Times:user=1.19sys=0.02,real=1.21secs]6052.607: [Full GC [PSYoungGen: 64K->0K(573568K)] [PSOldGen:682860K->155937K(699072K)] 682924K->155937K(1272640K) [PSPermGen:30890K->30890K(131072K)],0.8968940secs][Times:user=0.89sys=0.00,real=0.90secs]HPDiagnostics是一个比较好用的工具,可以诊断出执行时间较长和频繁的sql、执行时间较长的方法,还可以跟踪内存的使用状况以及对象的数量〔Jprofilertomcat格外慢,不知道现在性能怎样〕设置步骤如下:tomcatHpDiagnosticsDiagnostics分析器使用在 tomcat 中 加 入 如 下 设 置 : JAVA_OPTS=“$JAVA_OPTS-javaagent:/opt/MercuryDiagnostics/JavaAgent/DiagnosticsAgent/lib/probeagent.jar-agentpath:/opt/MercuryDiagnostics/JavaAgent/DiagnosticsAgent/lib/x86-linux64/libjvmti.so“tomcat35000端口HPJavaAgentjavawebstart://server:35000即可连接FullGC后的对象数量,确定特别对象的数量。所以需要对内部的规律有确定的了解,否则很难确定对象的数量存在特别。假设能确定到内存泄露的对象,还需要确认是哪个地方引用了这些对象,以至于无法释放。通常需要留意的地方时一些Map、ThreadLocal、静态变量等,web应用中还需要留意sessionapplication中是否存在没有去除的数据。分析代码是一种方式,但是很多时候可能很难从代码中定位。JVM自带的工具jmap在这个时候可以派上大用场。使用如下命令可以生成dump信息:jmap-dump:live,format=b,file=heap20230114.bin3624Dumpingheapto/var/log/heap20230114.bin...Heapdumpfilecreatedjhatdump信息:jhat-J-mx1024mheap_snapshot.binReadingfromheap.bin...DumpfilecreatedFriDec3109:30:54CST2023Snapshotread,resolving...Resolving2474879objects...Chasing references, expect 494dots........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论