我收到了一個關於我想用來顯示巨大日誌文件的NatTable SWT datagrid小部件的問題。將NatTable用於緩慢檢索的大數據
由於日誌文件大小可能爲幾GB,因此我無法將其完全加載到內存中。應用程序應該儘可能少地使用堆空間。因此,我的IDataProvider
實現了它的getDataValue
方法,通過小緩存機制和文件內原始行位置的緩存,即時讀取日誌文件行。當打開一個文件時,幾乎沒有任何關於它的內容的知道 - 甚至不需要表格最終要顯示的行數。
這導致了一些問題,這些問題目前嚇壞我了:
1)我估計總的行數(使用平均線路長度),直到該文件已被完全掃描,最大行數是真正知道當然。一旦發生這種情況,我的getRowCount
方法將返回實際正確的行數。這似乎嚇倒了NatTable組件,它完全失去了它的當前位置並跳轉到第1行! 2)在雙擊列的邊框時(如自動調整列的大小,就像在Excel中)一樣直觀地做事情時,我的應用程序完全凍結,因爲突然使用我的提供程序查詢所有行單元格內容,整個概念被濫用!我不想讓任何東西觸發完整的文件讀取!
有沒有人對我有一些提示?該文件是如此之少,如此糟糕...... 任何提示是非常感謝!我怎樣才能防止我的應用程序凍結?
謝謝!