jstat是jdk自帶的可以查看堆內存使用量及GC情況的指令.
具體情況請看另一篇博客: https://blog.csdn.net/liao0801_123/article/details/82908928
jvisualvm.exe是java的jvm內存/線程監視工具, 位於jdk--bin目錄下
以下通過一則簡單的內存泄漏案例結合使用兩個工具.
內存泄漏代碼:
class Key{
Integer id;
Key(Integer id){
this.id = id;
}
public int hashCode(){
return id.hashCode();
}
}
public void method(){
......
boolean ss = true;
Map<Key, String> map = new HashMap<Key, String>();
while(ss){
for(int i = 0; i< 100000; i++){
if(!map.containsKey(new Key(i))){
map.put(new Key(i), "Number:" + i);
}
}
//Thread.sleep(1000L);
}
......
}
jvisualvm.exe截圖
圖中時間點16:07:30進入內存泄漏方法
綠色箭頭, 接近堆內存使用峯值.
紅色箭頭, 宕機
藍色箭頭, 恢復
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
8704.0 8704.0 2520.3 0.0 69952.0 44990.8 174784.0 116411.3 61696.0 61600.4 203 1.352 17 4.381 5.733
8704.0 8704.0 2520.3 0.0 69952.0 45200.2 174784.0 116411.3 61696.0 61600.4 203 1.352 17 4.381 5.733
8704.0 8704.0 2520.3 0.0 69952.0 45408.2 174784.0 116411.3 61696.0 61600.7 203 1.352 17 4.381 5.733
8704.0 8704.0 2520.3 0.0 69952.0 45616.6 174784.0 116411.3 61696.0 61600.7 203 1.352 17 4.381 5.733
8704.0 8704.0 2520.3 0.0 69952.0 65486.6 174784.0 116411.3 61952.0 61700.4 203 1.352 17 4.381 5.733
8704.0 8704.0 0.0 6224.6 69952.0 34025.9 174784.0 116411.3 61952.0 61940.6 204 1.370 17 4.381 5.751
8704.0 8704.0 0.0 6224.6 69952.0 37953.5 174784.0 116411.3 62208.0 62144.6 204 1.370 17 4.381 5.751
8704.0 8704.0 0.0 6224.6 69952.0 39470.7 174784.0 116411.3 62208.0 62188.6 204 1.370 17 4.381 5.751
8704.0 8704.0 0.0 6224.6 69952.0 41256.0 174784.0 116411.3 62208.0 62207.5 204 1.370 18 4.381 5.751
8704.0 8704.0 0.0 0.0 69952.0 7639.7 174784.0 122571.6 62976.0 62918.8 204 1.370 18 4.879 6.249
8704.0 8704.0 0.0 0.0 69952.0 7895.4 174784.0 122571.6 62976.0 62918.8 204 1.370 18 4.879 6.249
8704.0 8704.0 0.0 0.0 69952.0 8120.1 174784.0 122571.6 62976.0 62918.8 204 1.370 18 4.879 6.249
8704.0 8704.0 0.0 0.0 69952.0 8375.8 174784.0 122571.6 62976.0 62918.9 204 1.370 18 4.879 6.249
8704.0 8704.0 0.0 0.0 69952.0 8542.6 174784.0 122571.6 62976.0 62919.7 204 1.370 18 4.879 6.249
8704.0 8704.0 8704.0 8704.0 69952.0 69952.0 174784.0 174784.0 64000.0 63867.6 206 1.740 19 4.879 6.619
8704.0 8704.0 0.0 5090.2 69952.0 69952.0 174784.0 174784.0 64000.0 63868.5 206 1.740 20 5.562 7.302
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63575.6 206 1.740 21 6.481 8.221
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63576.6 206 1.740 22 7.288 9.028
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63577.6 206 1.740 23 8.106 9.846
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63577.6 206 1.740 24 8.883 10.623
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63550.3 206 1.740 25 9.860 11.600
8704.0 8704.0 0.0 8703.9 69952.0 69952.0 174784.0 174784.0 63744.0 63551.5 206 1.740 26 10.659 12.398
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63551.5 206 1.740 27 11.451 13.191
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63551.5 206 1.740 28 12.267 14.007
8704.0 8704.0 0.0 8460.2 69952.0 69952.0 174784.0 174784.0 63744.0 63547.9 206 1.740 30 14.022 15.762
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63547.9 206 1.740 31 14.818 16.558
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63550.1 206 1.740 32 15.626 17.366
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63550.1 206 1.740 33 16.599 18.339
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63550.1 206 1.740 34 17.380 19.120
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63550.1 206 1.740 36 18.943 20.683
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 37 19.831 21.571
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 38 20.606 22.346
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 39 21.383 23.123
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 41 22.966 24.706
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 42 23.738 25.478
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 43 24.517 26.257
8704.0 8704.0 0.0 8703.9 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 44 25.293 27.033
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 45 26.176 27.915
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 47 27.780 29.520
8704.0 8704.0 0.0 8703.9 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 48 28.583 30.323
8704.0 8704.0 0.0 8703.9 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 49 29.371 31.111
8704.0 8704.0 0.0 8703.9 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 50 30.190 31.930
8704.0 8704.0 0.0 8703.9 69952.0 69952.0 174784.0 174784.0 63744.0 63549.9 206 1.740 51 31.189 32.929
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63472.8 206 1.740 52 31.997 33.737
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63488.0 63482.2 206 1.740 54 33.806 35.546
8704.0 8704.0 0.0 8703.7 69952.0 69952.0 174784.0 174784.0 63488.0 63484.4 206 1.740 55 34.589 36.329
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63488.0 63487.7 206 1.740 56 35.375 37.114
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63488.0 63487.5 206 1.740 57 36.283 38.023
8704.0 8704.0 0.0 8704.0 69952.0 69952.0 174784.0 174784.0 63744.0 63490.9 206 1.740 58 37.056 38.796
8704.0 8704.0 0.0 6.8 69952.0 1400.4 174784.0 111915.3 63744.0 63521.6 208 1.744 59 38.400 40.144
8704.0 8704.0 107.9 0.0 69952.0 64537.2 174784.0 111915.3 63744.0 63540.5 209 1.746 59 38.400 40.147
8704.0 8704.0 107.9 0.0 69952.0 64754.1 174784.0 111915.3 63744.0 63542.5 209 1.746 59 38.400 40.147
8704.0 8704.0 107.9 0.0 69952.0 64971.6 174784.0 111915.3 63744.0 63542.5 209 1.746 59 38.400 40.147
8704.0 8704.0 107.9 0.0 69952.0 65191.5 174784.0 111915.3 63744.0 63542.6 209 1.746 59 38.400 40.147
8704.0 8704.0 107.9 0.0 69952.0 65494.9 174784.0 111915.3 63744.0 63543.9 209 1.746 59 38.400 40.147
8704.0 8704.0 107.9 0.0 69952.0 69952.0 174784.0 111915.3 63744.0 63545.1 209 1.746 59 38.400 40.147
8704.0 8704.0 0.0 155.1 69952.0 307.5 174784.0 111915.3 63744.0 63545.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 457.2 174784.0 111915.3 63744.0 63545.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 761.1 174784.0 111915.3 63744.0 63545.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 912.8 174784.0 111915.3 63744.0 63545.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 1216.3 174784.0 111915.3 63744.0 63545.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 1368.0 174784.0 111915.3 63744.0 63545.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 1669.4 174784.0 111915.3 63744.0 63545.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 1825.3 174784.0 111915.3 63744.0 63547.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 2179.4 174784.0 111915.3 63744.0 63547.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 2333.9 174784.0 111915.3 63744.0 63547.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 2487.6 174784.0 111915.3 63744.0 63547.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 2786.9 174784.0 111915.3 63744.0 63547.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 2942.6 174784.0 111915.3 63744.0 63547.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 3239.9 174784.0 111915.3 63744.0 63547.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 25764.5 174784.0 111915.3 63744.0 63547.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 26066.4 174784.0 111915.3 63744.0 63547.1 210 1.748 59 38.400 40.149
8704.0 8704.0 0.0 155.1 69952.0 26222.5 174784.0 111915.3 63744.0 63547.1 210 1.748 59 38.400 40.149
8704.0 8704.0 198.3 0.0 69952.0 249.7 174784.0 111915.3 63744.0 63547.1 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 415.4 174784.0 111915.3 63744.0 63547.1 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 19151.7 174784.0 111915.3 63744.0 63555.4 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 25719.0 174784.0 111915.3 63744.0 63594.3 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 30240.2 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 30494.3 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 30753.0 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 30879.9 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 31133.8 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 31387.1 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 31520.4 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 31768.1 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 32027.5 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 32154.4 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 32408.6 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 32671.6 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 32948.1 174784.0 111915.3 63744.0 63630.6 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 33200.2 174784.0 111915.3 63744.0 63630.7 211 1.751 59 38.400 40.151
8704.0 8704.0 198.3 0.0 69952.0 33457.5 174784.0 111915.3 63744.0 63630.7 211 1.751 59 38.400 40.151
可以看出從第19次Full GC開始Eden區和 老年代(Old Generation)的 總大小和使用大小相等, 即GC無法再回收掉內存, 也就無法分配空間給新對象. 拋出異常 java.lang.OutOfMemoryError: Java heap space
Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.StringValue.from(StringValue.java:24)
at java.lang.String.<init>(String.java:178)
at java.io.Win32FileSystem.resolve(Win32FileSystem.java:241)
at java.io.File.<init>(File.java:312)
at org.apache.naming.resources.FileDirContext.file(FileDirContext.java:770)
at org.apache.naming.resources.FileDirContext.doGetAttributes(FileDirContext.java:398)
at org.apache.naming.resources.BaseDirContext.getAttributes(BaseDirContext.java:1163)
at org.apache.naming.resources.BaseDirContext.getAttributes(BaseDirContext.java:1116)
at org.apache.naming.resources.ProxyDirContext.getAttributes(ProxyDirContext.java:882)
at org.apache.catalina.loader.WebappClassLoaderBase.modified(WebappClassLoaderBase.java:1185)
at org.apache.catalina.loader.WebappLoader.modified(WebappLoader.java:500)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:420)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1341)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1542)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1552)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1552)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1520)
at java.lang.Thread.run(Thread.java:662)
Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space
at java.io.ObjectInputStream$BlockDataInputStream.<init>(ObjectInputStream.java:2352)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:274)
at sun.rmi.server.MarshalInputStream.<init>(MarshalInputStream.java:111)
at sun.rmi.transport.ConnectionInputStream.<init>(ConnectionInputStream.java:38)
at sun.rmi.transport.StreamRemoteCall.getInputStream(StreamRemoteCall.java:115)
at sun.rmi.transport.Transport.serviceCall(Transport.java:124)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)