Java Map.computeIfAbsent потребляет большой объем памятиJAVA

Программисты JAVA общаются здесь
Anonymous
Java Map.computeIfAbsent потребляет большой объем памяти

Сообщение Anonymous »

Я написал метод для обновления HashMap, предоставил значение идентификатора int (например, идентификатор клиента) в качестве ключа, метод проверял, доступен ли ключ на карте, в противном случае он создавал запись и связывал новый ArrayList для ключа. Если доступно, он вернет существующий список. Изначально я написал метод, используя Map.containsKey в сочетании с Map.put.

Код: Выделить всё

if(map.containsKey(id)) {
return map.get(id);
} else {
List list = new ArrayList();
map.put(id, list);
return list;
}
Вышеуказанный метод работал нормально, позже я подумал о его рефакторинге, чтобы использовать ComputeIfAbsent, который делал бы то же самое.
Поэтому я изменил метод как

Код: Выделить всё

return map.computeIfAbsent(id, ArrayList::new);
Хотя я ожидал, что это сработает, во время тестирования производительности я столкнулся с неожиданным потреблением динамической памяти. Есть идеи, почему новый код потребляет много оперативной памяти.

Подробнее здесь: https://stackoverflow.com/questions/798 ... igh-memory

Вернуться в «JAVA»