java 内存类_一个java类占用的内存

总共: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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值