gpt4 book ai didi

java - Java中如何查找一个对象的所有引用者?

转载 作者:行者123 更新时间:2023-11-30 04:37:23 24 4
gpt4 key购买 nike

我们遇到内存泄漏问题,我们不知道某个类的太多实例是从什么/哪里创建/引用的。这种情况发生在生产负载较重且我们无法获取堆转储(获取堆转储会导致 HA 服务器挂起时间过长)的情况下。由于性能下降,运行时分析在生产站点上也不是一个选项,客户对随机崩溃更满意,而不是在监控过程中试图捕捉崩溃瞬间而痛苦缓慢。我们不知道如何引发崩溃(泄漏),它只是有时会发生。

有没有办法在运行时从应用程序本身获取对象引用/实例化点?

我查看了http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ObjectReference.html它给出了这样的想法:这样的事情是可能的。

有什么指示如何最好使用自定义代码而不使用堆转储方式来实现此目的吗?已经尝试在测试环境中重现该问题,这似乎是彻底的徒劳无功。我们现在需要一种强力的方法来找到原因。

最佳答案

建议您尝试检查导致此类泄漏的代码。以下是一些有关相同内容的教程和帮助

关于处理 Java 中的内存泄漏的 IBM 文章 http://www.ibm.com/developerworks/library/j-leaks/

其他一些有用的文章 http://www.openlogic.com/wazi/bid/188158/How-to-Fix-Memory-Leaks-in-Java

还有一个Eclipse Memory Analyser Tool

但最推荐的解决方案是尝试运行jvisualvm从与您的程序运行相同的计算机上的 JVM 并启用分析。

关于java - Java中如何查找一个对象的所有引用者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13157333/

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