gpt4 book ai didi

java - 为什么 jvmmonitor 内存分析器没有列出我们的类

转载 作者:行者123 更新时间:2023-11-29 05:37:51 24 4
gpt4 key购买 nike

过去我使用 jvmmonitor.org 的 eclipse 插件进行 CPU 分析,但现在我对其内存分析功能感到困惑。具体来说,它没有列出我们的任何类(class)。它主要显示原语、原语数组、java.lang.String 以及一些 org.hibernate 和 org.springframework 类。是否存在我可能需要调整的某些内存配置文件配置,因为我当然希望我们本地编写的 com.* 类会出现在内存分析中。

最佳答案

您很可能没有正确阅读数据。当然,原语和 String(s) 特别有可能占用绝大多数内存。

你的对象可能确实持有对其中一些对象的引用,并且实际上缓存它们,通过使用枚举减少它们的实例数量,intern()ing 经常使用的字符串,使用 StringBuilder/StringBuffer 而不是 String,并且不要忘记清空旧引用更有可能解决您遇到的任何内存问题。在大多数情况下,调整代码的内部结构不太可能有所帮助(除非您在特殊对象中分配大块数据,这些对象由于某种原因不是基元或数组——不太可能),而不删除那些不需要的字符串和基元。

那么问题就变成了为什么所有这些东西都在内存中?我们能摆脱他们吗?如果是这样怎么办?通常通过取消引用、消除不必要的分配、驻留字符串、使用弱引用使它们可用于垃圾收集、不通过惰性初始化或其他策略(对象重用)首先加载它们、静态方法而不是实例方法等

来自他们的网站:“JVM Monitor 不提供分析引用文献的能力,而是提供(原文如此)生成 hprof 文件的能力,以便您可以使用其他工具(如 Memory Analyzer)进一步分析引用文献”我建议您查阅那里的文档,以及他们的 blog .我会注意到有一些替代工具可用于分析 hprof 文件。

关于java - 为什么 jvmmonitor 内存分析器没有列出我们的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790803/

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