В ответ здесь тоже:
Самый простой способ ответить на этот вопрос - взглянуть на исходный код java.util.Date
.
Имеет только 2 нестатических поля (Java 1.7.0_55):
private transient long fastTime;
private transient BaseCalendar.Date cdate;
long
имеет объем памяти 8 байтов, а cdate
является ссылкой на объект, который имеет размер 4 байта. Таким образом, всего 12 байтов .
Если будет создан экземпляр cdate
, это может потребовать дополнительных байтов в памяти, но если вы посмотрите и на конструкторы, иногда это даже не будет затронуто, а в других это будет null
конец конструктора, поэтому конечный результат также равен 12 байтов .
Это просто для создания Date
. Если вы вызываете методы для Date
(например, Date.toString()
), то создаст и сохранит объект в поле cdate
, которое не будет очищено. Поэтому, если вы вызовете определенные методы для Date
, использование памяти увеличится.
Примечание: Ссылки на объекты могут иметь длину 64 бита в 64-битных JVM, в этом случае использование памяти будет составлять 16 байтов.
Примечание # 2: Также обратите внимание, что это только использование памяти самого объекта Date
. Скорее всего, вы будете хранить его ссылку где-нибудь, например. в массиве или списке или поле в каком-либо другом классе, для которого потребуются дополнительные 4 байта (или, возможно, 8 байтов в 64-битных JVM).