为什么java中没有sizeof

时间:2011-12-01 18:21:52

标签: java sizeof operator-keyword

出于什么设计原因,java中没有sizeof运算符?知道它在c ++和c#中非常有用,如果需要你如何获得某种类型的大小?

5 个答案:

答案 0 :(得分:22)

因为size of primitive types是Java语言明确强制要求的。 JVM实现之间没有差异。

此外,由于new运算符根据其参数进行分配,因此无需指定所需的内存量。

有时候知道一个对象会占用多少内存肯定会很方便,所以你可以估算最大堆大小要求之类的东西,但我想Java语言/平台设计师并不认为它是一个关键方面。

答案 1 :(得分:7)

在c中有用只是因为你必须手动分配和释放内存。但是,因为在java中有自动垃圾收集,所以这不是必需的。

答案 2 :(得分:1)

在java中,您不直接使用内存,因此通常不需要sizeof,如果您仍想确定对象的大小,请查看this question

答案 3 :(得分:0)

内存管理由Java中的VM完成,这可能对您有所帮助:http://www.javamex.com/java_equivalents/memory_management.shtml

答案 4 :(得分:0)

C需要sizeof,因为int和long的大小因操作系统和编译器而异。或者至少它曾经。 :-)在Java中,所有大小,位配置(例如IEEE 754)都得到了更好的定义。

编辑 - 我看到@Maerics在他的回答中提供了Java规范的链接。