我有一個適用於CSV文件的swing應用程序。它逐行讀取完整文件,計算一些所需的統計數據並顯示輸出。 輸出屏幕的上半部分按JTable中的順序顯示文件中的每條記錄,下半部分顯示基於該數據計算的統計信息。問題是JVM佔用的內存比文件大小多4倍。 (在處理86MB文件堆區域時使用377 MB空間 - 使用jVisualVM檢查內存使用率)。在Java中閱讀大文件
注:
我已經使用LineNumberReader讀取文件
對於閱讀每一行的readLine((東陽的具體要求,我如果在內存使用有助於改變它))被使用,然後.split(',')該行的字符串被稱爲該記錄的單個字段。
將每個記錄存儲在Vector中以便在JTable中顯示,而其他統計信息存儲在JavaBean類中的HashMap,TreeMap和摘要數據中。還有一個圖是使用JFreeChart繪製的。
請建議減少內存利用率,因爲我需要處理2GB文件。
要說清楚,你是說你需要將整個2GB文件存儲在一個Vector中,並將其顯示在一個JTable中? – NPE 2012-04-24 17:37:30
你可以用一個8GB的堆來完成它,或者你可以只加載你需要顯示的那部分文件。 – 2012-04-24 17:40:25
是的,我想在內存中的2GB文件,但它不應該4倍的空間。 – Rony 2012-04-24 17:43:20