首页 > 编程语言 > 详细

一个java类占用的内存

时间:2020-06-24 11:23:53      阅读:63      评论:0      收藏:0      [点我收藏+]

总共:96byte
1KB = 1024BYTE
1024/96=10.6
1MB = 1024KB = 可以缓存10240个数据.

 

===============================================================================================

 

public class LimitInfoByKeySnBO {

//1.对象头 8 byte
//2.retCode 4byte
//3.retMsg 空,8(对象头)+4(引用)+4(对齐)byte
//4.residualValidityPeriod,8+8,16字节
//5.endTime,yyyy-MM-dd HH:mm:ss,8+40字节
总共:96byte
1KB = 1024BYTE
1024/96=10
1MB = 1024KB = 可以缓存10240个数据.

private int retCode;
private String retMsg;
private Integer residualValidityPeriod;
private String endTime;
}

===============================================================================================

 

 

计算一个java类占用的内存.
A:对象头
内存中,每个对象占用的总空间不仅包含对象内声明的变量所需要的空间,还包括一些额外信息,比如:对象头 和 填充物。“对象头”的作用是用来记录一个对象的实例名字、ID 和 实例状态(例如,当前实例是否“可到达”,或者当前锁的状态等等)。
在当前的JVM版本中(Hotspot),“对象头”占用的字节数如下:

一个普通对象,占用8 bytes
数组,占用 12 bytes,包含普通对象的 8 bytes + 4 bytes(数组长度)
B:基本类型

boolean、byte 占用 1 byte,char、short 占用 2 bytes,int、float 占用 4 bytes,long、double 占用 8 bytes
C:引用类型
每个引用类型占用 4 bytes
D:填充物
在Hotspot中,每个对象占用的总空间是以8的倍数计算的,对象占用总空间(对象头+声明变量)不足8的倍数时候,自动补齐。而,这些被填充的空间,我们可以称它为“填充物”。我们看下具体实例:

byte:1个字节,8位,-128~127 最大存储数据量 255

short:2个字节,16位,-32768~32767 最大存储数据量 65535

char:2个字节,16位,存储Unicode编码,用‘’

int:4个字节,32位,负的2的31次方~2的31次方-1 最大存储数据量 2的31次方-1

float:4个字节,32位

double:8个字节,64位

long:8个字节,64位,负的2的64次方~2的64次方-1 最大存储数据量 2的64次方-1


————————————————————————————————————————————————————————————————

一个java类占用的内存

原文:https://www.cnblogs.com/sea520/p/13186287.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!