Ну, это зависит от того, как вы хотите посчитать это.
Test
сам экземпляр не будет больше, он просто имеет ссылку на List
экземпляр (или null
, но и занимает столько же места), и что List
экземпляр является его собственный объект, хранящийся в других местах куча (за пределами вашего Test
экземпляра).
Экземпляр List
(в зависимости от реализации) также не меняется по размеру, но в свою очередь ссылается на другие объекты (записи списков или массивы или другие вещи).
В общем случае все экземпляры класса в Java занимают фиксированное выделение памяти, которое определяется классом и не меняется от экземпляра к экземпляру. Единственное, что может иметь «динамический» размер, это массивы (но это не все так динамично, поскольку оно также фиксируется на время создания массива, поэтому оно может варьироваться от экземпляра к экземпляру, но не через какое-то время для данного экземпляра)
Если вы хотите вычислить «замыкание по графу объектов» всей памяти, необходимой для объекта Test
и всех зависимостей/содержимого (например, чтобы оценить, сколько памяти необходимо для его сериализации в файл), тогда да , он будет расти в зависимости от количества объектов в списке.
Также обратите внимание, что ArrayList
с ["foo", "foo"]
может потреблять тот же общий объем пространства, как только ["foo", "foo", "foo"]
(так же один экземпляр строки повторно использовать три раза, а массив поддержки имеет восемь записей в любом случае). Или у вас может быть несколько экземпляров Test
, имеющих одинаковые List
. Так что это не так просто и зависит от того, как вы хотите рассчитывать.
Попробуйте это и посмотрите, используя API-интерфейс инструментария, на который вы ссылаетесь. – hexafraction
Не совсем, нет. «Тест» будет таким же; он всегда содержит только _reference_ в список, который живет где-то еще в памяти, и эта ссылка всегда имеет тот же размер. –