java – 如何判断应用程序中的特定对象不再使用?

我怎么能弄清楚一个对象(或一个类的对象)是否正在使用并准备好被GC收集.或者我怎么能知道该对象在应用程序运行时没有引用. (在获得GC之前) 最佳答案 我假设你的意思是检测一个对象在运行时不再使用,而不是你可以静态检查的东西.

通知对象即将被GCed的最简单方法是覆盖finalize()方法.注意:您必须小心在此方法中执行的操作.例如它是单线程的,阻塞将导致没有对象被清理.

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

注意:如果没有GC,没有简单的方法来检测不再使用的对象,如果长时间没有GC,那么在此期间你无法知道.

点赞