質問

私は、プロセッサの様々な数と異なるマシン上でマルチスレッドアルゴリズムのカップルの速度をテストするJavaプログラムを書かれています。

それは非常に大きな配列上の仕事にかなり大きなヒープ・スペースを必要とするので、

は、いくつかのマシンでは、マージソート*失敗します。私は簡単にプログラムを実行する前に、Javaヒープスペースを自分で変更することができますが、より堅牢かつ簡単なアプローチは、プログラム自体の中から、この作業を行うことであろうような気がします。

を要求する方法はあります/ Javaプログラムの進行中に仮想マシンのからより多くのヒープスペースを実現!

注:私は「Javaの-Xmx1Gプログラム」のようなスクリプトを使ってプログラムを実行することができることを理解してください。このテーマに関する私の好奇心は、一部の学術的です。

*私の実装では、インラインでマージされません。これは、O(n)は、余分なメモリを必要とします。

役に立ちましたか?

解決

Javaは、「Javaのヒープ領域」この場合には、メモリを動的に管理できるように、それはそれを気にすることから、プログラマを軽減するために設計されたすべての反対を設計していませんでした。

要するに、私はJavaで"malloc()"or "setHeapSize(int byes)"のようなものはないと言って怖います。

Javaのオン

あなたはしている制約 JVM の際にご使用可能なメモリのAMOUTへプログラムが開始されます。メモリ管理の面では、これは祝福と呪いの両方です。

動的なメモリ割り当てのようなもののためにあなたの代わりにCおよび/またはC++のような言語を使用してアルゴリズムを実装する使用しようとする必要があります。

他のヒント

私の知る限りでは、実行時にヒープサイズを制御する方法はありません。

これは、しかし必要ではないかもしれない:あなたは-Xmsとの最小および最大ヒープ・サイズを提供することができ、-Xmxは、それぞれを切り替えます。 (例えば-Xms128m -Xmx512m)JVMは、これらの範囲内に実際のヒープサイズを管理します。

最大値が使用されているメモリのサイズではない、これは使用状況に基づいて動的である。

の最大ヒープサイズは、あなたではなく、プログラムが使用より多くのメモリよりも、失敗した時点でなければなりません。それもacademicly、この動的に変更することはほとんど意味を成しています。

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