【问题标题】:How to discover which Jar or package creates Objects如何发现哪个 Jar 或包创建了对象
【发布时间】:2012-11-29 11:54:47
【问题描述】:

我的问题似乎很简单,但我还没有找到解决方案。

我需要知道 Tomcat 中部署的包是如何消耗内存的。

我尝试了一些工具,例如 VisualVM 和 JConsole,但我无法发现我部署的包中的哪个创建了对象。例如,我可以看到有很多 java.lang.String 对象,但我需要知道它们是从哪个包/JAR 创建的。

感谢编辑 omg...所以 prooooo

【问题讨论】:

    标签: java tomcat object memory


    【解决方案1】:

    您可以尝试使用MAT(Memory Analyzer Tool) 使用此工具,您可以检查使用 VisualVM 获取的堆转储...对于堆中的每个对象,您可以查看哪些对象引用了该对象,从而哪些对象阻止其他对象被垃圾收集

    【讨论】:

    • thx 伙计,这应该可以解决问题,我尝试使用 jmap 进行堆转储并打开它,我认为这应该是开发人员问我的,我会告诉你....跨度>
    • 非常好,你可以在这个 Eclipse 工具中使用 oql 语言,谢谢大家
    【解决方案2】:

    您可以尝试使用对象查询语言 (OQL) 来查询堆。也许这对你的目的有所帮助。

    你可以参考这个链接,看看你是否得到了你需要的东西。 Object Query Language in VisualVM

    【讨论】:

    • 谢谢,我尝试使用 bvanvelse 建议我的 MAT 工具,它应该可以工作,这也很有趣,但我不知道在哪里启动这些查询。
    • VisualVM 可以选择在堆上触发查询。里面有一个控制台。
    • 哦,这看起来不错,不能投票,因为我没有声誉,但我会向开发人员建议这个解决方案,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 2020-11-19
    • 2017-11-30
    • 2014-08-01
    相关资源
    最近更新 更多