我注意到其他程序上的堆内存使用量正在增加, 所以我做了一个简单的程序,看看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。