Java:这足以删除对象吗?

标签 java gwt garbage-collection hashmap

我有一个 HashMap,用于保存对我的应用程序模块的引用。

HashMap<String, Module> modules;

当我这样做时:

for(String key:modules.keySet()){
   modules.remove(key);
}

不应该再引用这些对象,因此它们应该在某个时候被 GC 删除。我是对的还是我错过了什么?这是安全的还是有可能以某种方式重新获得对对象的访问权?

这是否与执行时发生的情况相同:

modules.clear();

?

最后是一个更复杂的问题:当使用 GWT 执行此操作时,我可以确定对象在浏览器中消失了多少?我想在用户注销时执行此操作,以防止有人使用下一台计算机检索前一个用户的任何信息。当然,大多数模块都会在 unDetach() 中“忘记”它们的数据,但我不确定,所有模块都会这样做。这些信息当然是加分项,如果有人碰巧知道我将不胜感激 =)

最佳答案

当您遍历 keySet 并同时删除元素时,第一种方法可能会导致问题。第二种方法应该做正确的事情。如果您没有对这些模块的其他引用,它们应该被垃圾回收。

关于Java:这足以删除对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7727054/

相关文章:

java - 如何通过 Selenium-WebDriver 正确查找元素以用于输入目的

java - 搜索特定注释类型的所有实例

java - 将 GWT 库编译为 JavaScript 库

java - 如何销毁java对象?

java - SonarQube 本地 - 无法上传报告

java - 接口(interface)和实例化

eclipse - 在远程浏览器中调试 GWT 应用程序

java - 为嵌套 JSON 对象创建 GWT 覆盖

java - 指针和垃圾收集

java - 2.1 破解编码面试中的垃圾收集