2017-01-01 16 views
-4

現在、プロジェクトを進めており、問題を抱えています。私が書いているプログラムには、intより大きい大きな数字が必要です。だから、私はMath.BigIntegerを使いました。多くのBigIntegerを追加した後、OutofMemoryエラーが発生しました。私はそれがデータ型が十分に大きくないことを意味していると仮定しています。より大きなデータ型がありますか?そうでない場合は、どのようにしてこの問題を解決できますか?BigIntegerよりも大きい変数型はありますか?

+4

いいえ、それは例外の意味ではありません。その名前(およびそのjavadoc)が示すように、JVMのメモリが不足していることを意味します。 –

+0

これでJVMのメモリを増やすことは可能ですか?それとも、すべてのシステムメモリを使用していますか? – OctopusProteins

+1

Googleは「JVMのメモリを増やすことは可能ですか?」と答えると答えが出ます。 Googleはあなたの友人です。 –

答えて

1

JVMのヒープ領域が不足しているため、エラーが発生します。あなたがここにあなたのコードを貼り付けた場合、それは良いでしょうが、私はあなたがこれまでに投稿したものと答えを与えるためにしようとするでしょう

java -Xmx256m MyClass.java 

Xmx- Max Heap Size 
+0

@OctopusProteinsいいえ、WindowsのコマンドラインやLinuxの場合はターミナルで実行しないでプログラムを実行してください。 – user1613360

+0

ああ、私は参照してください。割り当てが保存されるか、再起動するたびにやり直す必要がありますか? – OctopusProteins

+0

@OctopusProteinsこれは単なるコマンドです。コードをどこにでも追加する必要はありません。デフォルトの最大ヒープサイズは物理メモリの半分で、物理メモリのサイズは192メガバイト、それ以外の場合は物理メモリの4分の1で、物理メモリのサイズは1ギガバイトです。自動的に起こるようにbashファイルに設定することができます。 – user1613360

0

を使用してヒープサイズを大きくしてみてくださいすることができます。

JavaのBigIntegerは、使用している操作の結果を格納するために必要な大きさに作られています。 BigIntegerは、オーバーフロー例外のないIntegersと似ています。 oracle docs:

算術演算のセマンティクスは、「Java言語仕様」で定義されているJavaの整数算術演算子のものとまったく同じです。

ほとんどの場合、Javaプロセスに十分なメモリが割り当てられていない可能性があります。あなたのJavaプロセスを実行している、しかし、あなたが提供するこれらの引数を探しているのかわからない:

java -Xmx1024M -Xms1024M 
+0

はい、私は今それを試みています。ありがとう。 – OctopusProteins

3

のBigIntegerよりも大きな変数の型はありますか?

いいえありません。 Bigintegerは、バックグラウンドでバイト配列を使用し、必要なときはいつでもスペースを割り当てます。サイズ制限は使用可能なメモリです。

メモリの半分を使用した場合、おそらく限界に達するでしょう。その数を増やす必要がある場合は、最初にそれが使用している領域よりも大きい領域を割り当てる必要があります。

関連する問題