是否有指南来估计由 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. 。因此,内存使用情况可能会根据您代表的实际值而变化。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top