情况有点复杂。 我有一个 Web 容器,它使用 RMI 控制另一台机器上的另一个应用程序。 RMI server端有一个HashMap,包含了web app端需要控制的用户信息。
当用户从 web 应用程序端注销时,会有一个 RMI 调用 RMI 服务器,告诉服务器注销用户。然后我只删除 HashMap 中的项目。
现在我意识到 GC 不会收集我在 HashMap 中删除的对象,因为可能其他线程仍在使用它并且该对象还包含一些子对象,例如用户联系人。
我真的不知道如何销毁整个对象,包括它的属性和属性的属性。
最佳答案
那么,您必须删除所有 hard references到您的对象以使其符合垃圾收集条件。没有别的出路。你的案例中的其他线程是什么?
关于java - 确保 Java 对象被销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9632371/