У меня есть 2 переменные, как показано нижеСколько места занимает «переменное имя»?
char s='s';
char Kaazoooombaa ='s';
как я могу знать, какое переменный потребляя, как много места?
У меня есть 2 переменные, как показано нижеСколько места занимает «переменное имя»?
char s='s';
char Kaazoooombaa ='s';
как я могу знать, какое переменный потребляя, как много места?
За исключением небольшого пространства для метаданных (которое будет выделено один раз в общей сложности, не один раз на экземпляр), имя не имеет значения . Таким образом, в приведенном примере каждая из этих переменных занимает 2 байта, возможно, дополняется 4 байтами в зависимости от других полей и используемой виртуальной машины.
Обратите внимание, что даже для ссылочных типов (включая массивы) пространство, занимаемое самой переменной , фиксируется по типу (и деталям виртуальной машины) - пространство, занимаемое ссылкой на пустую строку, является тем же как пространство, взятое ссылкой на огромную строку.
Там может быть стоимость использования переменной - или, возможно, в классе с помощью переменной. Вам нужно будет обратиться к спецификации VM, чтобы проверить точное двоичное представление. Даже тогда это представление в файле класса, что, возможно, не приведет к увеличению использования памяти к тому времени, когда все JIT скомпилировано и т. Д. В любом случае почти наверняка будет неактуально в схеме грандиозных вещей - памяти, необходимой фактическим объектам почти всегда затмевает память, требуемую самим кодом.
Значения переменных не означают ничего после компиляции; есть только там, чтобы сделать программу легкой для людей, чтобы читать и писать.
Переменные названия предназначены для чтения человеком. В этом случае s и Ka..a имеют одинаковый размер.
@TomTom для таких вещей, как публичные, их имена снова не меняют размер, но факт, что они публичны, если я не ошибаюсь. Этот размер может быть взят классом, который их содержит.
Обычно имена переменных используются компилятором, а не временем выполнения. Если класс экспортируется из вашего модуля, имена будут закодированы в метаданных.
Но если вы беспокоитесь о том, сколько места займет ваша программа, тогда имя переменных является наименее из вас беспокоит.
Уверен? Что относительно открытых полей в классе, которые также являются переменными? – TomTom
Вы видели тег Java? Как вы можете декомпилировать Java-код, восстанавливая имена переменных, если они нигде не хранятся? – paxdiablo
Даже если пространство, занимаемое переменными, пренебрежимо мало, я не думаю, что компилятор будет продолжать игнорировать такие вещи. –