Java BigDecimal内存使用情况?
是否有一个准则来估计a消耗的内存量BigDecimal
?
寻找类似于这些准则的估计String
内存使用情况的东西。
回答:
如果您查看源代码中的字段,则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()
,它将保留为零字节。因此BigDecimal
是(8 + 4 + 4)= 16个字节+ BigInteger
。
BigInteger
本身是4 + 4 + 4 + 4 + 4 = 20字节+ mag
。
20 +
16总共提供了36个字节加上大小,该大小始终是表示完整整数所需的最小位数。对于数字n
,它将需要一些log2(n)
位,可以将其转换为整数。您应该使用关于:
36 + Ceiling(log2(n)/8.0) bytes
(请注意,这不像您的示例字符串链接那样包含任何其他对象描述符开销,但是它应该给您一个很好的总体思路。)
以上是 Java BigDecimal内存使用情况? 的全部内容, 来源链接: utcz.com/qa/429816.html