почему в java нет sizeof - PullRequest
       6

почему в java нет sizeof

13 голосов
/ 01 декабря 2011

По какой причине в Java нет оператора sizeof?зная, что это очень полезно в c ++ и c # и как вы можете получить размер определенного типа при необходимости?

Ответы [ 5 ]

22 голосов
/ 01 декабря 2011

Поскольку размер примитивных типов явно предписан языком Java.Между реализациями JVM нет никакой разницы.

Более того, поскольку выделение выполняется оператором new в зависимости от его аргумента, нет необходимости указывать необходимый объем памяти.

Это будетКонечно, иногда удобно знать, сколько памяти займет объект, чтобы вы могли оценить такие вещи, как требования к максимальному размеру кучи, но я предполагаю, что разработчики языка / платформы Java не думали, что это критический аспект.

7 голосов
/ 01 декабря 2011

В c полезно только потому, что нужно вручную выделять и освобождать памятьОднако, поскольку в Java есть автоматическая сборка мусора, в этом нет необходимости.

1 голос
/ 01 декабря 2011

В Java вы не работаете напрямую с памятью, поэтому sizeof обычно не требуется, если вы все еще хотите определить размер объекта, проверьте этот вопрос .

0 голосов
/ 01 декабря 2011

C требовал sizeof, потому что размер ints и long варьировался в зависимости от ОС и компилятора.Или, по крайней мере, раньше.:-) В Java все размеры, битовые конфигурации (например, IEEE 754) лучше определены.

РЕДАКТИРОВАТЬ - я вижу, что @Maerics предоставил ссылку на спецификации Java в своем ответе.

0 голосов
/ 01 декабря 2011

Управление памятью осуществляется виртуальной машиной на Java, возможно, это может вам помочь: http://www.javamex.com/java_equivalents/memory_management.shtml

...