Java 生产代码中的内存泄漏检测
在今天的面试中,我遇到了一个棘手的问题。他们问我如何在生产代码中找到内存不足错误的根本原因。我开始谈论剖析器。采访者把它引向了另一个方向,他说,为了从分析器中获益,我如何生成生产中正在发生的流量。我一点也不知道。任何信息都会非常有用。探查器不是在生产中追踪内存泄漏的最佳工具Java 生产代码中的内存泄漏检测,java,memory-leaks,production-environment,Java,Memory Leaks,Production Environment,在今天的面试中,我遇到了一个棘手的问题。他们问我如何在生产代码中找到内存不足错误的根本原因。我开始谈论剖析器。采访者把它引向了另一个方向,他说,为了从分析器中获益,我如何生成生产中正在发生的流量。我一点也不知道。任何信息都会非常有用。探查器不是在生产中追踪内存泄漏的最佳工具 探查器不在生产JVM上运行 在开发中重新创建或测试在生产中造成内存泄漏的条件通常是不可能的(采访者暗示) 解决方案是获取堆转储(例如使用jmap-依赖于JVM),并使用优秀(并且免费提供)(MAT)之类的工具对其进行分析。注
解决方案是获取堆转储(例如使用jmap-依赖于JVM),并使用优秀(并且免费提供)(MAT)之类的工具对其进行分析。注意:获取堆转储只会冻结应用程序服务器,有时应用程序可能会崩溃。假设在生产环境中为jvm分配了12GB,则需要另一台12GB以上的机器来分析堆转储。您还可以使用jvisualvm进行分析。它作为JDK的一部分进行装运。