Gymterview
junior

Сколько выделяется дополнительно памяти при вызове LinkedList.add()

При каждом вызове add() создается ровно один новый объект вложенного класса Node, содержащий ссылку на данные (item), ссылку на следующий узел (next) и ссылку на предыдущий узел (prev).

Размер объекта Node в памяти: заголовок объекта (12-16 байт) + три ссылки (по 4 или 8 байт каждая) + padding до кратности 8. В x32 JVM — 32 байта, в x64 JVM с CompressedOops — 32 байта, без CompressedOops — 48 байт.

В отличие от ArrayList, LinkedList не имеет понятия capacity и не выполняет расширение массива, но каждый элемент требует создания отдельного объекта Node в heap.

На собеседовании: ответ — один новый объект Node. Можно упомянуть размер: ~32 байта на один Node в типичной конфигурации JVM.