栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java对象的sizeof

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java对象的sizeof

这个问题是没有意义的,至少没有没有进一步的背景。

Java中的“大小”概念仅针对基元进行了合理定义:一个字节为8位(毫不奇怪),一个字节

int
为32位,
long
64位,等等(请参见例如http://download.oracle.com/javase/tutorial
/java/nutsandbolts/datatypes.html
以获得完整列表)。

对于对象实例,它更加复杂,因为:

  • 对象实例可以(并且通常会)在内部包含对其他实例的引用,因此您必须决定是否计算这些从属实例,以及如何计算。如果多个实例共享一个依赖关系怎么办?
  • 有时,对象实例可能会被重用(例如的Interning
    java.lang.String
    ,请参阅http://en.wikipedia.org/wiki/String_interning)。因此,如果使用大小为y的x个对象,则总大小可能小于x * y
  • JVM在如何内部实现对象和实例方面有很多余地。它可能对不同的实例使用不同的技术(例如,共享内部数据结构),因此甚至可能没有有意义的“大小”可分配给单个对象。

也许您可以解释为什么对对象大小感兴趣。

估算实例使用的堆内存有一些经验法则(例如,在Sun JVM中,一个

java.lang.Object
实例使用8字节),但是这些将取决于您使用的JVM。

通常,如果您想了解堆的使用情况,请使用内存/堆分析器。

编辑:

好的,(从JDK
6开始)有一种方法可以近似估算对象使用的内存量:http
//download.oracle.com/javase/6/docs/api/java/lang/instrument/
Instrumentation.html#getObjectSize%28java.lang.Object%29

仍然只是一个近似值…



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号