2013-02-16 36 views
1

如何計算給定的BigDecimal值佔用的內存? (例如,0.4247246522。)如何計算給定BigDecimal值佔用的內存?

對於整數10,二進制等效項是1010,因此佔用4位內存。

如何處理BigDecimal對象?

+0

也許[這個問題](http://stackoverflow.com/q/52353/1438733)可以給你一個想法嗎? – Eric 2013-02-16 16:52:59

回答

0

我做了以下實驗:

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讓我相信我可能在我的代碼中有一個錯誤...