gpt4 book ai didi

java - 我们如何知道一个对象是否被 GC 标记为垃圾?

转载 作者:行者123 更新时间:2023-12-05 02:38:01 25 4
gpt4 key购买 nike

是否有任何工具可以可视化特定对象的 GC 状态?

最佳答案

如果您可以访问该对象,则它显然不可收集。

JVMTI 系统(Java 虚拟机工具接口(interface))允许其他进程链接到 JVM 并从中获取统计信息。这是调试器和分析器使用的; visualvm(大多数 JDK 附带)可以做到这一点,许多商业产品也可以。它们为您提供了一些 GC 见解。

JDK 本身也可以这样做,使用 -XX:+PrintGCDetails - read this article了解更多。

在同一个 JVM 中,您可以使用 java.lang.ref 中的类来引用对象,而不会妨碍垃圾回收。平凡地:

class Test {
private final WeakReference<String> weakRef;

public void test() {
String y = new String("");
weakRef = new WeakReference<>(y);
}

public boolean hasItBeenCollectedYet() {
// weak refs don't impede collection; `.get()` returns null once
// the object begins its collection process.
return weakRef.get() == null;
}
}

但是,使用该系统只是收集一般统计数据?它并不擅长 - 其他两个选项要好得多。

关于java - 我们如何知道一个对象是否被 GC 标记为垃圾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69808925/

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