によって消費されるメモリ量を見積もるためのガイドラインはありBigDecimal
ますか?
メモリ使用量を推定するためのこれらのガイドラインに似たものを探しています。String
によって消費されるメモリ量を見積もるためのガイドラインはありBigDecimal
ますか?
メモリ使用量を推定するためのこれらのガイドラインに似たものを探しています。String
ソースのフィールドを見ると、次の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 +?
のコメントはstringCache
言う
計算された場合、正規の文字列表現を格納するために使用されます。
を呼び出さないと仮定すると.toString()
、ゼロバイトのままになります。したがってBigDecimal
、(8+4+4)=16 バイト +BigInteger
です。
BigInteger
それ自体は 4+4+4+4+4=20 バイト +mag
です。
20+16 は、合計 36 バイトに絶対値を加えたものになります。これは常に、完全な整数を表すために必要な最小ビット数です。数値の場合、整数に変換できるビットn
が必要になります。log2(n)
あなたは約を使用する必要があります:
36 + Ceiling(log2(n)/8.0) bytes
(これには、文字列のリンクの例のように、他のオブジェクト記述子のオーバーヘッドは含まれていませんが、一般的なアイデアが得られるはずです。)
の内部を掘り下げると、仮数BigDecimal
が <= の場合、コンパクトな表現が使用されていることがわかりますLong.MAX_VALUE
。したがって、メモリ使用量は、表現している実際の値によって異なります。