一旦使用Google Guava创建Immutable版本,如何丢弃原始集合?

inj*_*joy 1 java immutability guava

我有一张如下地图,一旦我得到原始地图的不可变版本,我就不再需要原始地图了.有没有办法让GC回收它?

Map<String, String> map = new TreeMap<>();
map.put("1", "one");
map.put("2", "two");
map.put("3", "three");

ImmutableMap<String, String> IMMUTABLE_MAP = ImmutableMap.copyOf(map);
Run Code Online (Sandbox Code Playgroud)

maa*_*nus 6

另一个答案是对的,但你应该尝试做的是使用

ImmutableMap<String, String> map =
         ImmutableMap.<String, String>builder()
    .put("1", "one")
    .put("2", "two")
    .put("3", "three")
    .build();
Run Code Online (Sandbox Code Playgroud)

构建器针对其功能进行了优化,您通常可以在单个表达式中编写它.


更好的是

ImmutableMap<String, String> map = ImmutableMap.of(
    "1", "one",
    "2", "two",
    "3", "three");
Run Code Online (Sandbox Code Playgroud)

最多可用于四个键值对.


Thi*_*ilo 5

您可以通过不再引用它来使Map符合垃圾回收的条件.map超出范围时会自动发生这种情况.如果是"亡羊补牢"你,你可以明确地分配nullmap.

无论哪种方式,当JVM感觉像是在实时垃圾收集发生在后台.