代码之家  ›  专栏  ›  技术社区  ›  Ravi Gupta

“变量名”需要多少空间?

  •  1
  • Ravi Gupta  · 技术社区  · 14 年前

    我有两个变量如下

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

    我怎么知道哪个变量占用了多少空间?

    4 回复  |  直到 14 年前
        1
  •  7
  •   Jon Skeet    14 年前

    除了元数据的少量空间(总共分配一次,而不是每个实例分配一次)之外,名称没有区别 . 因此,在给定的示例中,每个变量将占用2个字节,根据其他字段和使用的vm,可能会填充到4个字节。

    注意,即使对于引用类型(包括数组), 变量本身 由其类型(以及vm的详细信息)固定-引用空字符串所占用的空间与引用大型字符串所占用的空间相同。


    可能会有 使用 变量-或者可能是每个使用变量的类。您必须参考vm规范来检查确切的二进制表示。即使是这样,类文件中的表示也可能不会增加所有jit编译时的内存使用量等。无论如何,在更宏大的方案中,这几乎肯定是不相关的——实际需要的内存。 物体 几乎总是使代码本身所需的内存相形见绌。

        2
  •  1
  •   jrockway    14 年前

    在编译之后,变量名没有任何意义;只有这样才能使程序便于人类读写。

        3
  •  0
  •   zellio    14 年前

    变量名是为了人类可读性。在这种情况下,s和ka..a大小相同。

    @tomtom对于像public这样的东西,他们的名字不会改变大小,但是如果我没有弄错的话,他们是public的事实会改变。但包含它们的类可能会采用这种大小。

        4
  •  0
  •   Arve    14 年前

    通常,编译器使用变量名,而不是运行时。如果类是从模块中导出的,则名称将编码在元数据中。

    但是如果你担心你的程序会占用多少空间,那么变量的名称是你最不担心的。