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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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