- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ヒープサイズの限界)
ヒープサイズの限界 - java.lang.OutOfMemoryError: Java heap space エラーの解決方法
このQ&Aのポイント
- javaで2の1乘から2の100000000乘までの値のmod n(nは1000ビット)の値をBigInteger型の配列に格納したくて、ヒープサイズの限界について質問です。
- プログラムを実行するとjava.lang.OutOfMemoryError: Java heap space エラーが発生し、パソコンのメモリが足りないことが原因です。
- エラーを回避するためには、javaコマンドで-Xmxオプションを使用してヒープサイズを増やすことが可能です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
1400MBのメモリ内にBigIntegerのオブジェクトを100000000個格納しようとすると、単純計算で1オブジェクトあたり15バイトも使えないことになります。BigInteger 1オブジェクトに必要なメモリサイズは保持する値によって変わりますが、nは1000ビットの値なので、nで割った剰余が平均15バイト以内で表せるわけがありません。お使いのコンピュータのメモリをちょっとやそっと増やしても100000000要素のBigInteger配列を全てメモリ内に格納することは無理です。 100000000要素を同時にメモリ内に格納しなくていいように、プログラムの構成を変えるしかないでしょう。 計算を終えた部分はファイルに書き出して、その値が後で必要になったときにはファイルからまた読み出すようにするとか。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
そもそも何をしたくてこんなことをしてるんですか? #1 でも指摘されてますけど, もっと端的に言えば「方針が間違っている」としか思えません.