Насколько я знаю, когда мы создаем ArrayList
:
ArrayList<String> list = new ArrayList<String>(SIZE);
JVM резервирует для него смежную часть памяти. Когда мы добавляем новые элементы в наш список, когда количество элементов достигает 75% от SIZE
, он резервирует новую, смежную часть памяти и копирует все элементы.
Наш список становится все больше и больше. Мы добавляем новые объекты, и список необходимо перестроить еще раз.
Что происходит сейчас?
JVM ищет непрерывный сегмент памяти, но не находит достаточно места.
The Garbage Collector может попытаться удалить некоторые неиспользуемые ссылки и дефрагментацию памяти. Что произойдет, если JVM не сможет зарезервировать место для нового экземпляра списка после этого процесса?
Создает ли он новый, используя максимально возможный сегмент? Какой Exception
будет выброшен?
Я прочитал этот вопрос Java: как ArrayList управляет памятью, и один из ответов:
Ссылка не занимает много места. Но в любом случае используется некоторая часть пространства. Когда массив становится все больше, это может быть проблемой. Мы также не можем забывать, что у нас есть другие вещи, которые используют пространство памяти.