【问题标题】:Actual size in bytes occupied by an array of x datatype in java?java中x数据类型数组占用的实际字节大小?
【发布时间】:2014-03-16 23:07:34
【问题描述】:

如何确定某种数据类型数组的“字节大小”?

让我问这个问题的原因是来自this icse board question paper

问题如下:

董事会接受的答案是(space occupied by one of those data types*no of elements in the array)

例如,10 对象的一个​​ int 数组据说会占用 4*10=40Bytes

但我的问题是,数组是否必须以某种方式存储它的长度和索引(增加它的内存大小),还是我误解了这个问题?

【问题讨论】:

  • 这只是测试检查员会理解的答案。你的理解是正确的。但是你敢在考试中写它。

标签: java arrays memory


【解决方案1】:

你的理解确实是正确的。官方回答对数组的存储方式采取了简单化的观点。

每个对象都有固定的成本。此外,数组需要跟踪它们的大小以及可能的其他内容。

答案还忽略了填充、对齐等问题。

【讨论】:

  • 那么,有没有可靠的方法来确定呢?
  • @AmithKK:您可以使用内存分析器(VisualVM、YourKit 等)在运行时确定这一点。答案当然是 JVM 特定的。
  • @AmithKK:同样,取决于 JVM,取决于它是 32 位还是 64 位等。我没有看到任何官方公式。
  • @AmithKK 这些不是公式,它们是分析工具,很像 eclipse。
  • 我知道@Batty。您不能在考试期间使用分析工具 ;)
猜你喜欢
  • 1970-01-01
  • 2012-09-19
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多