【问题标题】:why there is no sizeof in java为什么java中没有sizeof
【发布时间】:2012-01-10 21:22:33
【问题描述】:

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

【问题讨论】:

标签: java sizeof operator-keyword


【解决方案1】:

因为size of primitive types 是 Java 语言明确规定的。 JVM 实现之间没有差异。

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

有时知道一个对象将占用多少内存肯定会很方便,这样您就可以估计诸如最大堆大小要求之类的东西,但我想 Java 语言/平台的设计者并不认为这是一个关键方面。

【讨论】:

  • 伙计们,c#也是如此。我认为有设计原因
  • 这是设计的结果。
  • “人们批评它在 Java 中的缺失”是 C# 中许多东西的设计原因。
  • C# 比 Java 更明确地针对非托管/COM 互操作。
【解决方案2】:

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

【讨论】:

  • 我知道有时它可能有用,但是,正如@maerics 指出的那样,设计者可能认为没有必要将它添加到语言规范中。仍然有方法可以知道对象的大小,请检查其中一个问题 cmets。
【解决方案3】:

在java中,你不直接使用内存,所以通常不需要sizeof,如果你还想确定对象的大小,请查看this question

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-08-17
        • 1970-01-01
        • 2015-08-21
        • 2013-09-24
        • 2011-08-01
        • 2012-02-02
        • 1970-01-01
        相关资源
        最近更新 更多