2013-09-27 44 views
0

我有一個應用程序從syslog中讀取日誌消息,解析並將其分解爲4個字段,即「時間戳」,「設施」,「嚴重性」和「消息」。如何在不耗盡內存的情況下持續更新JTable?

我在JTable(有4列)中顯示了整個數據。我也同時將這些數據寫入xml文件。

的問題是,當前DefaultTableModel耗盡內存,當我們不斷添加行(每當新日誌消息到達)。那麼是否還有其他表格模型可以滿足我的使用案例(即JTable必須顯示所有日誌消息給用戶而不會耗盡內存)。

如果我試圖在模型達到某個極限時實現我自己的自定義表模型來從xml文件更新,那麼在設計這樣的模型時我必須牢記的事情是什麼(即問題,想法) 。

注意:我不能使用數據庫

謝謝。

+0

的問題是,有多少你真的需要保留在內存中?可以修剪舊消息嗎?我也認真考慮考慮使用類似單用戶的數據庫系統,如[H](http://www.h2database.com/html/main.html)或[HSQLDB(http://hsqldb.org/) - 恕我直言 – MadProgrammer

+0

其實因爲它的一個記錄,我需要所有的日誌信息使用數據庫顯示的user.About,將它花費太多時間來實現它們(我不知道很多關於他們).Could你給任何已經實施相關的例子,以便我可以參考它? –

+0

你可以探索使用磁盤備份集,但它需要你實現你自己的'TableModel' – MadProgrammer

回答

1

幾種可能性:

  • Profile您的應用程序,以確定可能的虛假對象分配或保留,如圖here

  • 改變虛擬機的堆的分配,如圖所示here

  • 探索適合您使用情況的基於磁盤的分頁方案。

相關問題