java - 如果GC后JConsole显示的 "Heap"内存使用量通常返回0,是否没有内存泄漏?

标签 java memory-leaks heap-memory jconsole

我一直在尝试使用 JConsole 来确定是否存在内存泄漏。

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

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

或者内存会在堆以外的其他地方泄漏吗?

最佳答案

我看到了一些可能性:

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

您的测试是一个好兆头,但不能保证。

关于java - 如果GC后JConsole显示的 "Heap"内存使用量通常返回0,是否没有内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28722734/

相关文章:

java - 无法执行目标 org.apache.maven.plugins :maven-compiler-plugin:3. 8.1:compile (default-compile) on project fhirql: Fatal error compiler

java - Spring的@Async忽略synchronized?

angular - 如何避免 Angular 9 中复杂 RxJS 管道的内存泄漏?

windows - _CrtCheckMemory 使用示例

java - 何时以及为何使用 JumboEnumSet

java - 通过@RequestMapping url 调用另一个项目

c++ - std::map operator[] 如何导致基本数据类型的内存泄漏?

ios - 从 NSObject 派生时,Swift iOS 内存泄漏指示 XCode8

c++ - 对象的动态大小 [在 C++ 中]

node.js - 获取 node.js 应用程序的最大堆大小