一个Java对象到底占多大内存

Python014

一个Java对象到底占多大内存,第1张

第一问中,integer,Double是可以准确知道大小

java中int double(包装类分别是Integer和Double,实际是一样的)分别占用的大小是4B 和8B

这里说的B,就是我们通常说的KB中的那个B,全称是Byte。

1B = 8bit。 所以我们通常会说int是32位,有时候又4字节

而String他是有char数组组成,一个长度为10的String,占用的char就是10个,一个char是2B。

所以看String占多少内存,需要知道String的长度

二问中:答案是可以的

摘自ObjectOutPutStream的API说明

FileOutputStream fos = new FileOutputStream("t.tmp")

ObjectOutputStream oos = new ObjectOutputStream(fos)

oos.writeInt(12345)

oos.writeObject("Today")

oos.writeObject(new Date())

oos.close()

栈内存放引用型变量,指向堆里面new出来的对象

堆内存放new出来的对象

方法只有一份用来共享,只有在执行的时候才在内存中分配空间,如图:

java中可以用.getBytes().length获取字符串占用内容的大小,原理是java中任何字符都采用Unicode编码,所以衡量占用内存大小采用占用的字节数。

举例如下:

public class TestStringSize {

public static final void main(String[] args) {

System.out.println("占用内存大小:"+"学java".getBytes().length)

}

}

输出结果:

占用内存大小:6 byte