[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-skolko-neobkhodimo-dopolnitelnoy-pamyati-pri-vyzove-arraylist-add":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":17,"progress":18,"seo":19},453,"skolko-neobkhodimo-dopolnitelnoy-pamyati-pri-vyzove-arraylist-add",12,"collections","Collections","📚","Сколько необходимо дополнительной памяти при вызове ArrayList.add()","Если в массиве достаточно свободных ячеек, дополнительной памяти не требуется — элемент записывается в следующую ячейку. Если массив заполнен, создается новый массив размером в 1.5 раза больше текущего (`oldCapacity + (oldCapacity >> 1)` в JDK 8+), и все элементы копируются в него.\n\nНапример, при capacity = 10 новый массив будет иметь capacity = 15. Это означает, что в момент расширения потребуется дополнительно `newCapacity * referenceSize` байт памяти (кратковременно в памяти будут оба массива). После копирования старый массив станет доступен для сборки мусора.\n\n> **На собеседовании:** скажите, что при наличии места — 0 дополнительной памяти. При расширении — создается массив в 1.5 раза больше. Уточните формулу роста для JDK 8+.","","junior",[15,16],"memory","jcf",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":33,"featuredSnippetReady":34},"Дополнительная память при ArrayList.add() — Gymterview","Если есть место — 0 дополнительной памяти. Если массив заполнен — создаётся массив в 1.5 раза больше (oldCapacity + oldCapacity >> 1) в JDK 8+.","Память при ArrayList.add() — Gymterview","0 при наличии места. При заполнении — массив в 1.5 раза больше. Формула: oldCapacity + (oldCapacity >> 1).",[25,26,27,28,29,30,31,32],"ArrayList","add()","память","capacity","расширение массива","1.5x","Java","собеседование","Если место есть — 0. Если массив заполнен — создаётся новый массив в 1.5 раза больше (oldCapacity + oldCapacity >> 1 в JDK 8+). Кратковременно в памяти оба массива, затем старый собирается GC.",true]