私は大学のオープン ソースの大規模な構成管理システムのごく一部のリファクタリングに取り組んでいます。
Weka などの機械学習用のオープン ソース ツールを使用しています。リファクタリングに割り当てられた側面は、データ マイニングとルールの構築を処理することです。
リバプールと日本で使用しているオープン ソース ファイルはうまく機能していますが、大規模なプロジェクトでプログラムを使用すると、メモリ使用量の問題が発生します。
私は主要なメモリ ホグを分離し、データを格納して操作するための別のデータ構造を理解する必要があるという結論に達しました。現在のところ、プログラムは整数、オブジェクト、文字列などの非常に大きな多次元配列になるものを使用しています。
動作のルールを導き出した後に、関連付けの設定を単純に再構成する方法がいくつかあります。多くの場合、単一の要素を追加または削除するか、多次元配列を単純に平坦化します。
私は主に一般的に C/C++ でプログラミングするので、Java で利用可能なデータ構造の専門家ではありません。静的配列を置き換えようとしているのは、2 番目の多次元配列を作成しなくても簡単にサイズ変更できる動的構造です。
現在起こっていることは、多次元配列からルール、オブジェクト、またはその他のさまざまなデータを追加および削除するたびに、まったく新しい構造を作成する必要があるということです。次に、すぐに新しい配列にコピーしています。
同じ多次元配列を単純に使用して、単純に新しい行と列を追加できるようにしたいと考えています。その後、一時的な値を保存して以前の値を上書きしたり、左、右にシフトしたりするだけで、構造内のデータを操作できるようにしたいと考えています。
法案に適合するJavaのデータ構造を思いつく人はいますか?
関連して、私は明示的なガベージ コレクションを調べましたが、System.Gc() を呼び出すか、チューニングによって JVM のガベージ コレクション動作を操作することによってのみ、JVM の収集を実際に提案できることがわかりました。より良い、またはより効果的な方法はありますか?
よろしく、 Edm