【问题标题】:Do method/parameter names affect how much memory something takes on the stack?方法/参数名称会影响堆栈上占用多少内存吗?
【发布时间】:2019-06-20 10:43:13
【问题描述】:

诸如方法名称或参数名称之类的内容对条目在堆栈上占用多少内存有影响吗?

我知道像ints 这样的原始参数确实会占用内存,但我想知道我是否可以通过简洁地命名我的方法和参数名称来节省内存,无论多么微不足道,或者我是否应该给他们足够长的名字来描述他们的工作。

public static int convertSomeIntegerValueToSomeOtherIntegerValueByMethodOfDividingTheOriginalIntegerByTwoAndRoundingTheOutputBecauseItIsAnInteger(int veryVerboseIntegerValueWithAVeryLongParameterNameSoItCanBeDividedByTwo){
    return veryVerboseIntegerValueWithAVeryLongParameterNameSoItCanBeDividedByTwo/2;
}
public static int divTwo(int a){
    return a/2;
}

这两种方法除了源代码的文件大小有什么区别吗?

另外,这些方法名是否会使编译后的代码变大?

【问题讨论】:

  • 我是这里的新手,所以如果您投反对票,请留言说明原因。谢谢!
  • 最后一个问题,你为什么不把这些放在一个类里,编译看看?

标签: java memory stack


【解决方案1】:

没有。这对内存使用完全没有影响。

堆栈上的东西完全根据它们相对于堆栈框架的“位置”来解决。

方法和类名当然存储在某个地方(在类元数据中),但这不会影响内存使用(除了加载类本身——请注意,它不影响创建实例的内存使用)。

除非在编译期间启用调试符号,否则根本不存储参数名称和变量名称。

在运行时占用内存(在堆上,而不是在堆栈上)的唯一东西是哈希表中的键之类的东西(但即使有内部字符串常量,内存效应也应该是微乎其微的)。

另外,这些方法名是否会使编译后的代码变大?

是的。但从大局来看,这并不重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-16
    • 2014-11-28
    • 2011-12-13
    • 2018-05-16
    • 2013-03-14
    • 2012-06-25
    • 1970-01-01
    • 2012-06-30
    相关资源
    最近更新 更多