CSV ファイルで動作するスイング アプリケーションがあります。ファイル全体を 1 行ずつ読み取り、必要な統計を計算し、出力を表示します。出力画面の上部には、ファイルの各レコードが JTable にその順序で表示され、下部にはそのデータに基づいて計算された統計が表示されます。問題は、JVM がファイル サイズの 4 倍のメモリを消費することです。(86MB のファイル ヒープ領域を処理している間、377MB のスペースが使用されます - メモリ使用率は jVisualVM を使用してチェックされます)。
ノート:
ファイルの読み取りに LineNumberReader を使用しました(特定の要件があるため、メモリ使用量に役立つ場合は変更できます)
すべての行を読み取るために readLine() が使用され、そのレコードの個々のフィールドに対して文字列であるその行の .split(',') が呼び出されます。
各レコードは Vector に格納されて JTable に表示されますが、他の統計は JavaBean クラスの HashMap、TreeMap、および要約データに格納されます。また、JFreeChart を使用して 1 つのグラフがプロットされます。
2GB のファイルを処理する必要があるため、メモリ使用率を下げることを提案してください。