巨大なログファイルを表示するために使用したいNatTableSWTデータグリッドウィジェットについて質問がありました。
ログファイルのサイズは数GBになる可能性があるため、メモリに完全にロードすることはできません。アプリケーションは、可能な限り少ないヒープスペースを使用する必要があります。したがって、私は、小さなキャッシュメカニズムとファイル内の生の行位置のキャッシュを使用して、ログファイルの行をその場で読み取るメソッドをIDataProvider
実装します。getDataValue
ファイルを開くとき、その内容についてはほとんど何もわかりません。テーブルに最終的に表示する必要のある行の数さえもわかりません。
これは、現在私を驚かせるいくつかの問題につながります。
1)ファイルが完全にスキャンされ、最大行数が確実にわかるまで、(平均行長を使用して)合計行数を見積もる必要があります。これが当てはまるとすぐに、私のgetRowCount
メソッドは実際の正しい行数を返します。これはNatTableウィジェットを驚かせているようです。現在の位置を完全に失い、行#1にジャンプします。
2)列の境界線をダブルクリックする(Excelのように列のサイズを自動化する)などの直感的な操作を行うと、プロバイダーを使用してすべての行のセルの内容が突然照会されるため、アプリケーションが完全にフリーズします。虐待!完全なファイル読み取りをトリガーするものは何も必要ありませんでした。
誰かが私にいくつかのヒントを持っていますか?ドキュメントはとても少なくてとても悪いです...どんなヒントも大歓迎です!アプリケーションがフリーズするのを防ぐにはどうすればよいですか?
ありがとう!