当前位置: 首页 > 面试题库 >

java中对象的大小是多少

养聪
2023-03-14
问题内容

众所周知,java使用以下数据类型

byte    Occupy 8 bits in memory
short   Occupy 16 bits in memory
int     Occupy 32 bits in memory
long    Occupy 64 bits in memory

如果我创建一个像

class Demo{
    byte b;        
    int i;
    long l;
}

Demo obj = new Demo();

现在的问题是obj大小< or > or =尺寸b+i+l104 bytes。请以适当的理由给我澄清。

谢谢,
Anil Kumar C


问题答案:

对象的内存大小取决于体系结构,主要取决于VM是32位还是64位。实际的VM实施也很重要。

对于每个对象,您需要为其对象标头(在64位VM上通常为2 * 8字节),其字段(根据VM的实现需要额外的对齐空间)的空间。然后将最后的空间四舍五入到字大小的最接近倍数。



 类似资料:
  • 问题内容: 我想记录一个对象占用一个项目的内存量(以字节为单位)(我正在比较数据结构的大小),并且似乎没有方法可以在Java中完成。据说C / C ++有方法,但这在Java中不存在。我尝试在创建对象之前和之后记录JVM中的可用内存,然后记录差异,但是无论结构中元素的数量如何,它只会给出0或131304,并且两者之间什么都没有。请帮助! 问题答案: 你可以使用该软件包: http://docs.o

  • 问题内容: 如果设置最大Java堆大小,那么单个对象可能的最大大小是多少? 假设我的应用程序只有一个类,而我正在创建一个对象。 该对象有大约大小限制吗? 我的课看起来像下面的课: 注意 正如我提到的JVM堆大小一样,我要求定量地回答。 问题答案: 理论上最大的Java对象(如果您有足够大的堆)将是带有2 31-1个元素的Java对象。那是16Gb。 但是,对于给定的堆大小,您将能够创建的最大对象取

  • 问题内容: 我最近在Netbeans(6.7)中增加了对Profiler的使用,这是一个很棒的工具。 我有一个问题。进行堆转储时,可以在摘要页面(期望窗口)上“按保留的大小查找最大的对象”。 这个值是什么,如何将其用于分析内存使用情况? 问题答案: 对象的保留大小是该对象从垃圾回收保留的内存量。 形式上的定义是“对象的大小加上递归仅由第一个对象引用的所有对象的大小”。 有关保留的内存是什么的更多说

  • 问题内容: 是什么导致内存中单个对象的大小? 我知道原语和引用会,但是还有其他吗?方法的数量及其长度是否重要? 问题答案: 这完全取决于实现,但是有一些因素会影响Java中的对象大小。 首先,Java对象中字段的数量和类型肯定会影响空间使用,因为您至少需要拥有容纳该对象所有字段所需的存储空间。但是,由于填充,对齐和指针压缩的优化,没有直接公式可用于精确计算以这种方式使用了多少空间。 对于方法,通常

  • 问题内容: 我有一个,我想知道它正在使用多少内存。 的是变体是这样,它不是那么容易,因为乘法每一个对象的大小的数组中的元素数目。 问题答案: 您可以使用诸如此类的对象及其对应对象来进行有根据的猜测,但这并不考虑两次调用之间通过GC处理的对象。

  • 问题内容: 谁能说出Java 中布尔值的位大小? 问题答案: 它取决于虚拟机,但是很容易将代码从类似的问题改编成关于Java中字节的问题: 重申一下,这取决于VM,但是在运行Sun的的Windows笔记本电脑上,我得到以下结果: 这表明,Sun的JVM基本上可以将布尔值打包成一个字节。