如果JConsole中显示的“堆”内存使用量通常在GC后返回0,那么是否没有内存泄漏?

时间:2015-02-25 15:21:11

标签: java memory-leaks heap-memory jconsole

我一直在尝试使用JConsole来识别是否有内存泄漏。

我让我的代码运行了很长时间,并确保它执行所有可用函数的多次迭代,多次启动/停止所有线程,多次实例化和释放每个对象,遇到尽可能多的意外情况/错误。

毕竟,如果我在Jconsole中按“执行GC”几次并且绿色“堆”存储器图形返回0--这是否意味着,假设所有代码已执行多次,我(可能)没有内存泄漏?

或者内存可以泄漏到堆之外的其他地方吗?

1 个答案:

答案 0 :(得分:1)

我看到了一些可能性:

  • 未关闭连接
  • 带有键的映射,其中实现了hashCode / equals方法错误
  • WebApps中的
  • :数据保存在会话中
  • 清理代码因异常而无法运行 - >大多数情况下,这种泄漏发生在生产中,因为它们需要时间“建立”,或者特殊情况:不可用的数据库,....

你的测试是一个好兆头,但没有保证。