gpt4 book ai didi

java - 在一次采访中有人问我如何检测 Java 中的内存泄漏?

转载 作者:行者123 更新时间:2023-11-30 07:46:10 25 4
gpt4 key购买 nike

我不知道怎么回答这个问题。相反,我告诉他们我在 Web 应用程序 中没有看到任何可能发生内存泄漏的实际代码/情况。我还告诉他,如果创建的对象过多并且这些对象超出范围,GC 将负责回收内存。

我的问题是(1) 我的回答够好吗?(2) 能否给我一个 Web 和/或非 Web 环境中 Java 内存泄漏的实际示例?

谢谢

最佳答案

好主题!

您需要先监控 Java 内存消耗。

最简单的方法是使用每个 JVM 附带的 jstat 实用程序。

jstat -gcutil <process_id> <timeout>

它将报告每一代(Young、Eldery 和 Old)的内存消耗和垃圾收集时间(Young 和 Full)。

一旦您发现完整垃圾收集执行得太频繁并且花费太多时间,您就可以假设应用程序正在泄漏内存。

然后您需要使用 jmap 实用程序创建内存转储:

jmap -dump:live,format=b,file=heap.bin <process_id>

然后你需要用内存分析器分析heap.bin文件,例如Eclipse Memory Analyzer (MAT)。

MAT 将分析内存并为您提供有关内存泄漏的可疑信息。

关于java - 在一次采访中有人问我如何检测 Java 中的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50881376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com