我有2个变量,如下面
char s='s';
char Kaazoooombaa ='s';
我怎么知道哪个变量消耗了多少空间?
答案 0 :(得分:7)
除了少量的元数据空间(总共分配一次,而不是每个实例分配一次),名称没有区别 1 。因此,在给出的示例中,每个变量将占用2个字节,可能填充为4个字节,具体取决于其他字段和正在使用的VM。
请注意,即使对于引用类型(包括数组),变量本身所占用的空间也是由其类型(以及VM的详细信息)修复的 - 引用为空的空间string与引用巨大字符串所占用的空间相同。
1 变量的每个使用可能有成本 - 或者也许每个类使用变量。您必须查阅VM规范以检查确切的二进制表示。即便如此,这也是类文件中的表示,这可能不会导致在所有JIT编译等时增加内存使用。无论如何,几乎可以肯定在宏大的方案中无关紧要 - 实际所需的内存对象几乎总是使代码本身所需的内存相形见绌。
答案 1 :(得分:1)
变量名称在编译后没有任何意义;只有那里才能使程序易于人类阅读和写作。
答案 2 :(得分:0)
变量名称用于人类可读性。在这种情况下,s和Ka..a的大小相同。
@pomTom对于像公开这样的东西,他们的名字再次不会改变大小,但如果我没有弄错的话他们是公开的事实。这个大小可以由包含它们的类承担。答案 3 :(得分:0)
通常,变量名称由编译器使用,而不是运行时。如果从模块中导出类,则名称将在元数据中进行编码。
但如果您担心程序会占用多少空间,那么变量的名称是您最不担心的。