1

Java アプリケーションを複数回実行する必要があるユース ケースがあります。アプリケーションのパフォーマンスのボトルネックは、初期化時間です。初期化時に、アプリケーションは 1,000 万件のレコードをディスクからメモリ データ構造にロードし、次にアプリケーションはメモリ内データ構造で約 1 億件のルックアップを実行します。

私がやりたいことは、ディスクからレコードを何度もロードしないようにすることです。そして、データ構造の検索に共有メモリを使用するアプリケーション。リモート メソッド呼び出し/Web サービス呼び出しは使用したくありません。これは、ルックアップ部分にコストがかかりすぎるためです。

また、スレッドを使用するオプションがありません。

4

3 に答える 3

1

メモリ マップされたファイルにデータ構造を構築します。これらは、プロセス間および同じプロセスの実行間で共有できます。ただし、バイトレベルでデータを構造化する方法を決定する必要があるため、それらの使用は簡単ではありません。つまり、Java オブジェクトは使用できません。(良い面では、これは GC オーバーヘッドがほとんどないことを意味します)

于 2012-10-23T11:45:55.377 に答える
0

理想的には、このアプリケーションをサーバーにし、実行するコマンドが要求/応答メカニズムを介して必要なデータを取得する必要があります。

もう1つのオプションは、プログラムを実行するたびに非常に迅速にロードできる必要なデータのスナップショットを作成することです。

于 2012-10-23T11:37:59.657 に答える
0

私はそれを使用したことはありませんが、Class Data Sharingが役立つようです。

于 2012-10-23T17:16:21.393 に答える