Сколько места занимает «имя переменной»? - PullRequest
1 голос
/ 22 марта 2010

У меня есть 2 переменные, как показано ниже

char s='s'; 
char Kaazoooombaa ='s';

как узнать, какая переменная занимает сколько места?

Ответы [ 4 ]

7 голосов
/ 22 марта 2010

За исключением небольшого количества места для метаданных (которое будет выделено один раз всего, а не один раз за экземпляр), имя не имеет значения 1 . Таким образом, в приведенном примере каждая из этих переменных будет занимать 2 байта, возможно, дополненные до 4 байтов, в зависимости от других полей и используемой виртуальной машины.

Обратите внимание, что даже для ссылочных типов (включая массивы) пространство, занимаемое самой переменной , фиксируется ее типом (и деталями виртуальной машины) - пространство, занимаемое ссылкой на пустую строку такое же, как пространство, занимаемое ссылкой на огромную строку.


1 Может быть стоимость за использование переменной - или, возможно, за класс, использующий переменную. Вы должны обратиться к спецификации VM, чтобы проверить точное двоичное представление. Даже в этом случае это представление в файле класса, которое может не привести к увеличению использования памяти к тому времени, когда все это JIT скомпилировано и т. Д. В любом случае, это почти наверняка не имеет отношения к более сложной схеме - памяти, необходимой для фактического объекты почти всегда уменьшают объем памяти, необходимый для самого кода.

1 голос
/ 22 марта 2010

Имена переменных ничего не значат после компиляции; только для того, чтобы люди могли легко читать и писать эту программу.

0 голосов
/ 22 марта 2010

Обычно имена переменных используются компилятором, а не средой выполнения. Если класс экспортируется из вашего модуля, то имена кодируются в метаданных.

Но если вы беспокоитесь о том, сколько места займет ваша программа, то имя переменных - это самое меньшее из вас.

0 голосов
/ 22 марта 2010

Имена переменных предназначены для удобства чтения.В этом случае s и Ka..a имеют одинаковый размер.

@ TomTom для таких вещей, как публикация, их имена снова не меняют размер, но тот факт, что они публичны, делает, если я не ошибаюсь.Этот размер может быть принят классом, который их содержит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...