Mar*_*eon 20 java memory memory-management bigdecimal
是否有一个估算a消耗的内存量的指南BigDecimal
?
寻找与这些指南类似的内容来估算String
内存使用情况.
M. *_*sup 21
如果你查看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 +?
Run Code Online (Sandbox Code Playgroud)
stringCache的注释是"用于存储规范字符串表示,如果计算的话.",所以假设你不调用toString,我们将其保留为零字节,所以总共有(8 + 4 + 4)= 16 BigDecimal中的字节+ BigInteger和BigInteger的4 + 4 + 4 + 4 + 4 = 20字节+ mag.所以共有36个字节加上幅度.据我所知,幅度始终是表示完整整数所需的最小位数,因此对于数字n,它将需要log2(n)位,可以将其转换为整数.所以一般来说你应该使用about:
36 + Ceiling(log2(n)/8.0) bytes
Run Code Online (Sandbox Code Playgroud)
(注意这不包括任何其他对象描述符开销,因为你的字符串的示例链接确实如此,但它应该给你一个很好的总体思路.)
归档时间: |
|
查看次数: |
12493 次 |
最近记录: |