2011-10-26 4 views
3

最近、私は悪名高いエラーメッセージ:OutOfMemoryErrorを取得しています。私は16GB RAMと2X2.6 GHクアッドコアを搭載した64Bit Macを持っています。このエラーメッセージを得ることは、私が実行している同じアルゴリズム(このエラーメッセージを引き起こす)が別のマシン(ubuntu 16GB Ram)でスムーズに実行されているため、私にとっては意味がありません。Javaメモリを増やす方法(アルゴリズムはubuntuで動作しますが、Macでは実行しません;同じマシン構成)

System.out.println(java.lang.Runtime.getRuntime().maxMemory()); 

私は私のMac上で上記のコードを実行すると、私が手:129957888(コース:-)のコンマなし)

そして、私が取得Ubuntuマシン上でこのコードを実行:1856700416

私のアルゴリズムを実行するためにどのように私は私の最大メモリを増やすことができます誰に教えてください?ありがとう!

私は日食に設定しようとしました:デフォルトのVM引数-Xms512m -Xmx4g、しかし何も変わっていません。

+0

私はあなたが16GBのRAMを意味すると思いますか? – Alex

答えて

1

あなたは精緻化しなければならないでしょう。 Eclipseで、またはEclipseの外でテストを実行していますか? Eclipseに "-Xmx"パラメータを渡すだけで、Eclipseのmax mem値を実際に変更する正しい方法(「-vmargs」を接頭辞として使用する必要があります)を正しく行っても、あなたが望むことはできません。アルゴリズムを実行しているforkされたJVMのmax mem値を変更する場合は、実行コンフィギュレーションのパラメータを変更する必要があります。

0

マットbのように見えます。プログラムが本当に必要としない限り、最大ヒープサイズを4GBに設定したくないかもしれないということを言いたいと思います。私が理解していることから、JVMは起動時にそのメモリをすべて割り当て、必要に応じてコードを実行するためにそのメモリを使用します。それほど多くのメモリを割り当てようとすると、実行中の他のアプリケーションにパフォーマンスの問題が発生します。代わりに、あなたのコードが失敗するのに長い時間がかかる場合は、128MB単位で増やしてください。また、メモリプロファイラを使用して、実際に使用しているスペースの量を確認することもできます。そんなことがあるのか​​どうか分かりません。

これはおそらくあなたの設定では問題ではありませんが、私のような単なる死者にとっては、あまりにも多くのメモリを割り当てることは問題になる可能性があります。

関連する問題