Java BigDecimal内存使用?
-
21-09-2019 - |
题
是否有指南来估计由 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
IS(8+4+4)= 16个字节+ BigInteger
.
BigInteger
本身是4+4+4+4+4 = 20字节+ mag
.
20+16总计36个字节加大小,这始终是表示完整整数所需的最小位。一个数字 n
它将需要 log2(n)
位,可以转换为ints。您应该使用大约:
36 + Ceiling(log2(n)/8.0) bytes
(请注意,这不包含其他任何对象描述符,因为您的示例链接确实可以为您提供一个很好的总体想法。)
其他提示
如果您深入研究 BigDecimal
如果显着性为<=,您会看到它使用紧凑的表示。 Long.MAX_VALUE
. 。因此,内存使用情况可能会根据您代表的实际值而变化。
不隶属于 StackOverflow