BigDecimal
特定の値が占有するメモリを計算するにはどうすればよいですか? (例: 0.4247246522
)
整数 10 の場合、2 進数で 1010 に相当するため、4 ビットのメモリを占有します。
BigDecimal
オブジェクトの場合はどのように行われますか?
BigDecimal
特定の値が占有するメモリを計算するにはどうすればよいですか? (例: 0.4247246522
)
整数 10 の場合、2 進数で 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でくっついてるからおかしい。
これは、おそらく私のコードにバグがあると信じています...