Java 如何确定应用程序中的特定对象不再使用?

Java 如何确定应用程序中的特定对象不再使用?,java,class,object,Java,Class,Object,我如何判断一个对象(或一个类的对象)是否正在使用中并准备好由GC收集。或者,在应用程序运行时,我如何知道对象没有引用。(在它得到GCed之前)在Eclipse中,您可以右键单击您的类,然后选择References>Project我使用Eclipse插件。它将向您显示没有引用的公共类、方法或字段,并允许您轻松删除它们。我想您的意思是检测一个对象在运行时不再使用,而不是可以静态检查的对象 通知对象即将被GCed的最简单方法是重写finalize()方法。注意:在这种方法中,您必须小心操作。e、 g.

我如何判断一个对象(或一个类的对象)是否正在使用中并准备好由GC收集。或者,在应用程序运行时,我如何知道对象没有引用。(在它得到GCed之前)

在Eclipse中,您可以右键单击您的类,然后选择
References>Project
我使用Eclipse插件。它将向您显示没有引用的公共类、方法或字段,并允许您轻松删除它们。

我想您的意思是检测一个对象在运行时不再使用,而不是可以静态检查的对象

通知对象即将被GCed的最简单方法是重写finalize()方法。注意:在这种方法中,您必须小心操作。e、 g.它是单螺纹的,堵塞会导致没有物体被清理

另一种方法是使用弱引用或软引用并监视引用队列。这是一种监视何时检测到可用于清理的对象的方法。有关示例,请参见WeakHashMap的源代码


注意:没有简单的方法可以检测没有GC的对象不再使用,如果您很长一段时间没有GC,您也无法同时知道。

您可以在代码中grep类的名称,并查看是否找到正在使用它的实例。有些IDE有可以找到类引用的工具。你为什么把答案放在评论框里?小心!您的类可以通过反射使用。这是不可能被自动检测到的,因为类名可以在运行时构造(源代码中没有显式字符串)。OP的可能副本在下面评论说,他实际上想知道JVM中的对象何时不再使用,而不是应用程序中的类。不幸的是,没有人理解这个意思,每个人的回答都是错误的。我已经标记了这个问题,请主持人注意——我不知道在这种情况下该怎么办。我不想编辑这个问题,因为它会使所有答案无效。