gpt4 book ai didi

java - 如何检测堆外Java应用程序中的内存泄漏?

转载 作者:搜寻专家 更新时间:2023-11-01 03:20:33 25 4
gpt4 key购买 nike

我们有一个 Java 应用程序,它在 Windows 7 环境中通过 JNA 使用 SWT 和其他一些 DLL。

我们已经看到 JVM 进程的内存使用量随时间增加,但 JVM 堆在正常的 GC Activity 下相对稳定。

我们怀疑 SWT 和/或 JNA/DLL 存在一些内存泄漏,但无法确定原因或位置。

在Windows平台上有没有什么工具可以帮助检测这类问题?或者 Java 平台中的任何工具可以帮助解决这个问题?欢迎提出任何建议。

最佳答案

在 Java 8 中有一个命令行开关:-XX:NativeMemoryTracking=<value> , 其中值可以是 off , summarydetail .

您可以将其设置为 detail然后您可以使用 jcmd 查询它.

关于这个 here 有一些官方文档.虽然此功能相当有限,但它可能有助于找到原因。


否则,识别问题根源的一种粗略但有效的方法是将 dll 替换为虚拟版本(甚至是非 native 虚拟版本),看看是否可以重现相同的问题。

关于java - 如何检测堆外Java应用程序中的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31670882/

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