В следующем фрагменте (единственная цель которого - образовательное тестирование), всегда ↲ истинно.Есть ли способ проверить, когда элемент удален из слабого набора?
Set<String> weakSet = Collections.newSetFromMap(new WeakHashMap<>());
weakSet.add("someKey");
System.gc();
weakSet.contains("someKey");
Я бы ожидать, что best effort сделано с помощью виртуальной машины Java, чтобы освободить пространство включает в себя удаление объектов, которые слабо достижимый (слабый набор элементы без каких-либо сильных ссылок). Но я ошибаюсь.
Итак, есть ли способ проверить на практике автоматическое удаление слабых ссылок, чтобы вы могли видеть, что ссылка ушла? Другими словами, как вернуть false?
Причина, по которой snippet всегда возвращает 'true', потому что [' String' литералы обычно не собираются с мусором] (https://stackoverflow.com/questions/15324143/garbage-collection-of-string-literals). –