java - 如何获取垃圾收集对象的统计信息?

标签 java performance memory-management garbage-collection

是否可以查看已设为 null 且为

的 java 对象(及其类类型)
  1. 尚未收集/清理垃圾
  2. 收集/清理垃圾。

这一统计数据将有助于了解有多少对象被重复创建(通过错误的逻辑)而不是一次性创建。

最佳答案

我认为这在理论上是可能的,但坦率地说,你会疯狂地尝试它。

查找不可访问对象的途径是使用 Java VM Tool Interface (JVMTI) 迭代堆中的所有对象(可访问或不可访问),以便找到您要查找的对象。然后,您通过 JVMTI 提取其状态并(以某种方式)具体化它,以便可以显示它。

通常您会在单独的 JVM 中执行此操作;例如运行调试器或分析工具的那个。但应用程序可以将代理附加到自身,并使用它在 JVM 中进行挖掘。然而,这不是 JVMTI 的预期用途,我预计这样做可能会存在“危险”。

您可以在这里阅读更多内容:

但是,如果你疯狂地试图让这个工作正常运行,请不要责怪我。

<小时/>

更新我同意 Marko 的观点,即你不太可能通过查看无法访问的对象来学到任何重要的东西。

关于java - 如何获取垃圾收集对象的统计信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28657834/

相关文章:

VB.NET SLOW 编译时间 - 没有磁盘或 CPU 事件

Javascript 性能 : How to check what is slowing down the page?

MySQL SELECT * 究竟是如何工作的 MySQL/Query Efficiency

ios - IOS的AudioToolBox出现EXC_BAD_ACCESS如何解决

java - SOAP 信封与 Java 客户端调用 .NET SOAP Web 服务的区别

java - Android:如何从监听器调用 Activity 的方法

java - 关闭 JavaFX 选项卡不会释放内存

c - 为什么 free 不清除指针值?

java - switch 语句中的这个值如何被未初始化?

java - 在 Glassfish 中强制清除 EJB3 缓存