3

比較的大量のデータを処理する Swing アプリがあります。たとえば、現在、数百万行のデータを含む CSV ファイルを処理しています。パフォーマンスと単純さの理由から、すべてのデータをメモリに保持します。ただし、ユーザーが異なれば、処理する必要のあるデータの量も RAM の量も異なります。インストーラーを作成するときはもちろん、ヒープ サイズを指定する必要があります。ユーザーが構成や .bat ファイルを手動で編集しなくてもヒープを指定できるようにする簡単な方法はありますか? すべてのユーザーがこれに満足しているわけではないと思います。

アプリが 3 つの異なるショートカットを指定し、それぞれに異なるメモリ量が指定されている 1 つの例を見てきました。これは機能する可能性がありますが、より柔軟なオプションが必要です。ユーザーは、自分に最適なものを選択できます。

4

5 に答える 5

6

IntelliJ に似たものを用意することをお勧めします。OutOfMemoryException が発生すると、構成ダイアログが表示されます。このダイアログを使用すると、ユーザーはヒープ サイズを構成し、それを に保存できますidea.exe.vmoptions。ファイルの内容を java/javaw 起動コマンドにサブスクライブするか、1 つの Java プログラムをブートストラップして実際のプログラムを起動する必要があります。

これに関する非常に優れた方法は、データ サイズに基づいてメモリ サイズを提案することです。ユーザーは、プログラムが必要とするメモリの量を実際に知る方法がないため、値を選択する際に提供できるガイダンスは非常に役立ちます。

このソリューションをサポートするには、データの破損を回避する方法で OutOfMemoryExceptions を予期して処理することが非常に重要です。

于 2010-09-09T12:25:36.927 に答える
1

主なアイデアは次のとおりです。

  • 次のようなシェル スクリプトを使用してメイン アプリケーションを起動します。
@エコーオフ
setlocal
REM これは、ユーザー構成ファイルから JVM コマンド ライン オプションを読み取ります。
(%HOMEDRIVE%%HOMEPATH%\myapp.config) の /f %x の場合、JVM_OPTIONS=%x を設定します。
REM 重要: java ではなく javaw を呼び出します
javaw -jar myApp.jar %JVM_OPTIONS%
エンドローカル
  • Swing アプリケーションで、メニュー オプションの [ Memory settings... ] を使用します。ユーザーがそれを選択すると、ユーザーの構成ファイルを解析し、設定ダイアログに入力して、ユーザーが適切なものを変更できるようにします。ユーザーが [適用]または[ OK ] をクリックすると、ユーザーが選択した設定 (あなたの場合は ) に従ってコマンド ライン オプションでユーザー構成ファイルを上書きし、アプリケーションを再起動してこれらの設定を適用する-Xmxなどのメッセージを表示します。
于 2010-09-16T19:41:05.990 に答える
1

outofmemory excpetion をキャッチし、swing ユーザー ダイアログを起動してメモリ制限を設定し、この値を Runtime.exec() を使用するスレッドに渡します。 java -cp lib の jar vmoptions を使用してアプリケーションを再起動します。ユーザー.サンプル:

 Runtime.getRuntime().exec("java -cp
 -Xms2560m -Xmx2560m -XX:NewSize=32M -XX:MaxPermSize=256M -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewG launch.jar");
于 2010-09-21T09:14:54.193 に答える
1

スクリプトから始まる固定メモリ設定がほとんどない短い startup.jar を作成します。次に、startup.jar は、Runtime.exec() と調整されたパラメーターを使用してターゲット アプリを起動します。

1 つの JVM よりも多くのメモリを消費する 2 つの JVM インスタンスになります。しかし、とにかくアプリケーションが大量のメモリを消費する場合、最初の JVM は重要ではありません。

于 2010-09-09T12:29:36.007 に答える
0

インストーラーの作成方法については言及していません。まだ使用していない場合は、NSISを使用することをお勧めします。ドキュメントは適切で、Eclipse 用のプラグインがあります。ウィザードを使用して nsi ファイルを生成し、ウィザードでは使用できないオプションについて手動で編集できます。

現在の要件に関しては、オプションのインストーラーにページを追加し、選択したオプションに基づいて、プログラムの起動に使用できるユーザー設定フォルダーに正しいシステム プロパティ ファイルをコピーするだけです。可能かどうかはわかりませんが、プログラムがインストールされたら、ユーザーはインストーラーを再実行して別のオプションを選択できると思います。

于 2010-09-09T12:29:07.770 に答える