質問

で消費されるメモリの量を推定するためのガイドラインはありますか 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 IS(8+4+4)= 16バイト+ BigInteger.

BigInteger それ自体は4+4+4+4+4 = 20バイト+です mag.

20+16は、合計36バイトと大きさを与えます。これは、完全な整数を表すために必要なビットの最小数です。数のために n 必要になります log2(n) INTに変換できるビット。あなたはについて使用する必要があります:

36 + Ceiling(log2(n)/8.0) bytes

(これには、文字列の例のリンクが行うように、他のオブジェクト記述子オーバーヘッドのいずれも含まれていませんが、一般的なアイデアが得られるはずです。)

他のヒント

の内部を掘り下げる場合 BigDecimal 重要である場合、コンパクトな表現を使用することがわかります<= Long.MAX_VALUE. 。したがって、メモリの使用量は、あなたが表す実際の値によって異なる場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top