3

最近、悪名高いエラー メッセージが表示されますOutOfMemoryError。私は 16GB RAM と 2X2.6 GH クアッドコアを搭載した 64Bit Mac を持っています。私が実行しているのと同じアルゴリズム(このエラーメッセージの原因)が別のマシン(ubuntu 16GB RAM)でスムーズに実行されているため、このエラーメッセージを取得しても意味がありません。

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

私のMacで上記のコードを実行すると、次のようになります:129,957,888(もちろんコンマなし:-))

そして、ubuntu マシンでこのコードを実行すると、次のようになります: 1,856,700,416

アルゴリズムを実行するために最大メモリを増やす方法を誰か教えてもらえますか? ありがとう!

eclipse: default VM arguments に設定しようとしました-Xms512m -Xmx4gが、何も変わりませんでした。

4

3 に答える 3

6

-Xmxおよびは、ヒープ サイズを変更-Xmsするコマンドの正しい引数ですが、 Eclipse は別の方法で構成する必要がありますjava

于 2011-10-26T15:32:31.330 に答える
1

詳しく説明する必要があります。Eclipse でテストを実行していますか、それとも Eclipse の外部で実行していますか? 「-Xmx」パラメーターを Eclipse に渡すだけでは、Eclipse の最大メモリ値を実際に変更する正しい方法で実行したとしても、目的の処理は行われません (「-vmargs」を前に付ける必要があります)。アルゴリズムを実行しているフォークされた JVM の最大メモリ値を変更する場合は、実行構成のパラメーターを変更する必要があります。

于 2011-10-26T15:41:07.060 に答える
0

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

これはおそらくセットアップの問題ではありませんが、私のような単なる人間にとっては、その多くのメモリを気軽に割り当てることは問題になる可能性があります.

于 2011-10-27T14:30:34.787 に答える