java bigdecimal 存储_Java BigDecimal内存使用情况?

如果您查看BigDecimal源代码中的字段,请执行以下操作:

BigDecimal:

long intCompact +8 bytes

int precision +4 bytes

int scale +4 bytes

String stringCache +?

BigInteger intVal +?

BigInteger:

int bitCount +4 bytes

int bitLength +4 bytes

int firstNonzeroIntNum +4 bytes

int lowestSetBit +4 bytes

int signum +4 bytes

int[] mag +?

stringCache的注释是“用于存储规范字符串表示,如果计算的话”,所以假设你不调用toString,我们将把它保留为零字节,所以总共有(8 4 4)= 16字节BigInteger在BigDecimal中为4×4 4 4 = 20字节,为BigInteger。所以共有36个字节加上大小。据我所知,幅度总是表示整数所需的最小位数,所以对于数字n,它将需要log2(n)位,可以将其转换为int。所以一般来说你应该使用:

36 + Cieling(log2(n)/8.0) bytes

(注意,这不包括任何其他对象描述符开销,因为您的字符串的示例链接,但它应该给你一个很好的一般想法。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值