使用.clear()或让GC处理它

Pup*_*vin 2 java garbage-collection hashmap clear

在我的代码的一部分中,创建了两个LinkedHashMaps,如下所示:

Map<Byte, Integer> hash1 = new LinkedHashMap<Byte, Integer>();
Map<Byte, Integer> hash2 = new LinkedHashMap<Byte, Integer>();
Run Code Online (Sandbox Code Playgroud)

之后,运行for循环以将值添加到它们各自的HashMap中,然后HashMaps运行另一个用于创建数据包的循环.调用第二个循环后调用.clear()会不会更好,或者只是让垃圾收集器处理它?

squ*_*ull 8

如果不调用clear(),GC将不会处理它,因为对象仍然会被hashmap引用,直到它超出范围.

如果hashmap无论如何都超出了范围,你可以让GC处理它.首先清除它可能不会产生可衡量的差异.

  • @PuppyKevin,然后清除它们或清空对它们的引用将完全浪费你的时间,并且对性能没有任何影响. (4认同)
  • 实际上,在它超出范围之前清除hashmap将会使执行"clear()"的时间缩短,因为GC将收集所有涉及的对象而无需删除hashmap引用. (3认同)