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

回到顶部