我注意到其他程序的堆内存使用量正在增加,所以我创建了这个简单的程序,看看JConsole是否在简单的HelloWorld应用程序上报告了相同的内容。我在一个循环中添加了一个Thread.sleep()来保持应用程序活着以进行测试。
这个问题的根源是什么?我应该担心吗?
此图表显示了我的测试设置:
这是我用于测试的代码:
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
while(true)
{
try {
System.out.print("Sleeping...");
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Working");
}
}
}
此图表显示堆内存在15分钟内翻倍:
25分钟后,我确实看到了回收的记忆,但同样的泄漏从那里继续:
这只是intellij的行为方式吗?回收的记忆是否足以说这不是泄漏?
注意:MacBook Pro 2.8GHz 16 GB上的系统是macOS High Sierra。 IntelliJ Ultimate 2018.2。