TreeMap помещает 100 элементов (1 МБ каждый), а Heap имеет только 80 МБ памяти, поведение в этом случае? - PullRequest
0 голосов
/ 27 мая 2019

Пространство кучи имеет только 80 МБ доступной памяти. Нам нужно поместить 100 элементов (по 1 МБ каждый) в TreeMap.

Каково поведение в этом случае, когда 80-й элемент помещается в карту? Как будет работать сборка мусора в этом сценарии? Как эффективно справиться с таким сценарием?

1 Ответ

1 голос
/ 27 мая 2019

Это немного неясно, поскольку вы ставите Key и Value на Map, а не на отдельные элементы.Я предполагаю, что ваше сочетание «ключ + значение» даст вам 1 МБ.

Если они действительно имеют 1MB каждый - ваша память взорвется намного быстрее, чем даже 50 элементов, которые вы положили в свой TreeMap,так как у каждого объекта есть 2 заголовка (12 bytes в сочетании с типичными виртуальными машинами);там задействовано заполнение + каждый ключ + значение заключен во внутреннюю Entry, что также добавляет некоторые накладные расходы.

GC не сможет вам сильно помочь, у вас ограниченная память с самого начала;ваша виртуальная машина взорвалась с OutOfMemory.GC будет срабатывать, когда вы приближаетесь к пределам (это в значительной степени зависит от используемого GC и входных параметров), но поскольку очистить будет не так много, он, в принципе, будет мало что делать, если вообще будет.

...