2013-02-16 1 views
1

주어진 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); 
    } 
} 

:

+0

아마 [이 질문] (http://stackoverflow.com/q/52353/1438733) 아이디어를 줄 수 있습니까? – Eric

답변

0

나는 다음과 같은 실험을하고있는 중이 야

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)); 
      } 
     } 
    } 
} 

결과 지금까지 : 그것은 32에 붙어 있기 때문에

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 

그것은 이상하다.

내가 내 코드에 버그가 있다고 믿게한다.

관련 문제