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)