java - JConsole 中的内存泄漏是什么样子的?

标签 java memory-leaks jconsole

我是trying to use JConsole to see if I have a memory leak但不知道要寻找什么。如果我不得不猜测,尽管垃圾回收,内存使用量应该总是上升,如下所示:

enter image description here

正如您在我的另一个 SO 问题中所看到的,我看到了一个锯齿状边缘,内存使用量会上升(即使浏览器已关闭并且没有请求到达我的本地 Tomcat 服务器),然后就会下降。

enter image description here

Java 中的内存泄漏在 JConsole 中“看起来像什么”?

最佳答案

我认为了解内存泄漏的最好方法是做一个实验。尝试这样的方法来创建内存泄漏:

    Collection<Object> data = new LinkedList<>();
    while(true) {
        long[] canBeGarbageCollected = new long[10000];
        long[] canNotBeGarbageCollected = new long[100];
        data.add(Arrays.asList(canNotBeGarbageCollected));
    }

除了 JConsole 之外,您还可以使用 VisualVM,它有一个不错的插件,名为“Visual GC”。具有飞行记录功能的 Java Mission Control 可以为您提供很多详细信息。命令行上也存在一个非常强大的工具:

jstat -gcutil -h20 $PID 1000

这将表明内存泄漏最终将导致 100% 旧空间利用率 (O),并且 CPU 将花费越来越多的时间进行完整垃圾收集 (FGCT)

关于java - JConsole 中的内存泄漏是什么样子的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32725007/

相关文章:

memory-leaks - 使用 Twisted + Cyclone + PyPy 处理 POST 请求会导致内存泄漏?

iphone - 内存泄漏 - 应用程序退出并显示信号 9

java - Jconsole小程序监控: Which process to monitor?

java - 使用jmockit模拟扩展类的抽象方法

java - 为什么我的 tomcat 应用程序的内存使用量不断增长?

java - 如何将图片返回给客户端?

java - 将 jconsole 与 ssl 一起使用时握手失败

java - 使用 Jconsole 监控远程系统

java - 使用 Apache POI 3.9 克隆数据透视表?

c# - 网络编程和数据包交互