生产代码中的内存泄漏检测

7

今天面试中我遇到了一个棘手的问题。他们问我如何找到生产代码中内存溢出错误的根本原因。我开始谈论性能分析器。面试官把话题引向了另一个方向,问我如何生成与生产环境中发生的流量相同的流量以从性能分析器中受益。我一无所知。任何信息都将非常有帮助。

1个回答

4

性能分析器不是在生产环境中追踪内存泄漏的最佳工具。

  1. 性能分析器不在生产JVM上运行。
  2. 通常无法在开发或测试中重新创建导致内存泄漏的条件(面试官提示)。

解决方案是获取堆转储(例如使用jmap - JVM相关),并使用像出色的(免费提供的)SAP Memory Analyzer(MAT)这样的工具进行分析。


1
注意:获取堆转储会冻结应用服务器,有时应用程序可能会崩溃。而且,假设你在生产环境中为jvm分配了12GB,你需要另一台内存大于12GB的机器来分析堆转储。您还可以使用jvisualvm进行分析。它作为JDK的一部分随附。 - Sanjeev Kumar Dangi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接