【问题标题】:How to update JTable continously without running out of memory?如何在不耗尽内存的情况下持续更新 JTable?
【发布时间】:2013-09-27 19:29:44
【问题描述】:

我有一个应用程序,它从 syslog 读取日志消息,对其进行解析并将其分解为 4 个字段,即“时间戳”、“设施”、“严重性”和“消息”。

我将整个数据显示在 JTable(有 4 列)中。我也同时将这些数据写入xml文件。

问题是当前DefaultTableModel 在我们不断添加行时内存不足(每当新日志消息到达时)。那么是否有任何其他表模型可以适合我的用例。(即JTable 必须向用户显示所有日志消息而不会耗尽内存)。

如果我尝试实现自己的自定义表模型以在模型达到一定限制时从 xml 文件进行更新,那么在设计这样的模型时我必须牢记哪些事情(即问题、想法)。

注意:我不能使用数据库

谢谢。

【问题讨论】:

  • 问题是,你真的需要在内存中保留多少?可以修剪旧消息吗?我也会认真考虑使用像 H2HSQLDB 这样的单用户数据库系统 - 恕我直言
  • 实际上,由于它是一个记录器,我需要将所有日志消息显示给用户。关于使用数据库,实现它们是否需要太多时间(我不太了解它们)。可以你提供了任何已经实现的与此相关的示例,以便我可以参考它?
  • 您可以探索使用磁盘支持的集合,但这需要您实现自己的TableModel
  • 磁盘支持的集合是否有任何免费许可。(因为我公司正在开发的是基于属性的 IDE 工具)。可以就我在进行此类操作时可能面临的问题提供一些提示设计?

标签: java swing jtable


【解决方案1】:

几种可能性:

  • Profile您的应用程序,以识别可能的虚假对象分配或保留,如here所示。

  • 改变虚拟机的堆分配,如图here

  • 探索适合您用例的基于磁盘的分页方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-24
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多