在ListView中查看JavaFX中的大型日志文件

我编写了一个JavaFx应用程序来查看日志文件。 每个文件都在一个新选项卡中打开,我会浏览文本并将其添加到列表视图中。 我创建了一个cellfactory来突出显示列表文件中的某些文本,这一切都正常。

问题是日志文件介于800-1300Mb之间。 一次打开3-4,JVM达到内存限制。

还有另一种方法可以让目前只在内存列表视图中显示文本,并且滚动加载到内存中吗?


我需要能够使用滚动条滚动。 我搜索了谷歌,我发现了很多相同的问题。 人们想要在几年前用Java(In Swing)显示一个大文本的1-10Gb文件并且没有答案:

  • http://www.dreamincode.net/forums/topic/224430-reading-in-large-text-files1gb-10gb-java-swing/
  • http://www.javaprogrammingforums.com/awt-java-swing/9577-diplay-large-text-jtextarea-2gb.html
  • http://www.dreamincode.net/forums/topic/224430-reading-in-large-text-files1gb-10gb-java-swing/

我看了一下分页,但我需要能够使用滚动条,我需要它似乎。 用户不应该知道某些部分不在内存中。 它们滚动并显示下一行。

有没有人在Java(Swing或JavaFX)中找到解决方案?

一些可能的方法来防止查看大型日志文件时出现内存问题:

  1. 使用分页控件并一次加载日志文件的部分

  2. 子类ObservableList并通过类似于按需加载数据的Guava Iterable来支持它。

两种方法都只将当前视图所需的日志文件数据加载到内存中,而不是将整个日志文件加载到内存中。