1
如何計算給定的BigDecimal
值佔用的內存? (例如,0.4247246522
。)如何計算給定BigDecimal值佔用的內存?
對於整數10,二進制等效項是1010,因此佔用4位內存。
如何處理BigDecimal
對象?
如何計算給定的BigDecimal
值佔用的內存? (例如,0.4247246522
。)如何計算給定BigDecimal值佔用的內存?
對於整數10,二進制等效項是1010,因此佔用4位內存。
如何處理BigDecimal
對象?
我做了以下實驗:
public class ObjectSizeFetcher {
private static Instrumentation instrumentation;
public static void premain(String args, Instrumentation inst) {
instrumentation = inst;
}
public static long getObjectSize(Object o) {
return instrumentation.getObjectSize(o);
}
}
有了這個測試:
public class TestDoubleSize {
public static void main(String args[]) {
String num = "0.";
for (int i = 1; i < 500000; i++) {
num += (int) (Math.random()*10) ;
BigDecimal bg = new BigDecimal(num);
if (i % 1000 == 0) {
System.out.println(i + "\t" + bg.precision() + "\t" + ObjectSizeFetcher.getObjectSize(bg));
}
}
}
}
結果至今:
Digits Precision Bytes
1000 1000 32
2000 2000 32
3000 3000 32
4000 4000 32
5000 5000 32
6000 6000 32
7000 7000 32
8000 8000 32
9000 9000 32
10000 10000 32
11000 11000 32
12000 12000 32
13000 13000 32
14000 14000 32
15000 15000 32
16000 16000 32
17000 17000 32
18000 18000 32
19000 19000 32
20000 20000 32
21000 21000 32
22000 22000 32
23000 23000 32
24000 24000 32
25000 25000 32
26000 26000 32
27000 27000 32
28000 28000 32
29000 29000 32
30000 30000 32
,因爲它停留在32這是奇怪的。
This讓我相信我可能在我的代碼中有一個錯誤...
也許[這個問題](http://stackoverflow.com/q/52353/1438733)可以給你一個想法嗎? – Eric 2013-02-16 16:52:59