Подтвердить что ты не робот

У ArrayLists, которые содержат разные типы объектов, используются разные объемы памяти?

Например, если у вас будет

    int a=2; int b=3;
    ArrayList<Integer>integers=new ArrayList<Integer>();
    integers.add(a); integers.add(b);

и

    String c="cow"; String d="deer";
    ArrayList<String> strings= new ArrayList<String>();
    strings.add(c); strings.add(d);

Будут ли они брать разные объемы памяти? Любая помощь/ответ были бы оценены, спасибо!

4b9b3361

Ответ 1

сами ArrayLists представляют собой не что иное, как набор ссылок, и они берут одинаковый объем памяти (если тот же размер) независимо от типа объектов, которые они хранят. Однако элементы, на которые ссылается ArrayList, имеют различную память, как и следовало ожидать.

Ответ 2

ArrayLists - это не что иное, как набор ссылок, поэтому размер ArrayList не зависит от типа объекта, на который он указывает. Следовательно, память ArrayList не зависит от типов ссылочных объектов.

Ответ 3

В вашем случае, и теоретически, они будут потреблять одинаковый объем памяти, в генераторах времени исполнения "не существует", и оба массива на самом деле являются массивами объектов.

Ответ 4

ArrayList arr = new ArrayList<Foo>(10);

arr содержит только 1 ссылку массива поддержки. Этот базовый массив будет иметь 10 ссылок из 10 различных объектов Foo в куче.

Ответ 5

ArrayList - это объект, например String или smth else. Он хранит коллекцию во внутреннем массиве Object []. Эти массивы будут иметь разную величину, если память, но сама ArrayList будет иметь тот же размер.