首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JavaFX中查看ListView中的大型日志文件

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

Stack Overflow用户
提问于 2013-08-14 18:09:32
回答 2查看 2.6K关注 0票数 0

我编写了一个JavaFx应用程序来查看日志文件。这些文件在一个新的选项卡中打开,我运行文本并将其添加到列表视图中。我创建了一个单元格工厂来突出显示列表文件中的某些文本,这一切都在工作。

问题是日志文件在800到1300 is之间。同时打开3-4,JVM就达到了内存限制。

是否有另一种方法可以使当前显示在内存中的列表视图中的文本只显示在内存中,并且在我滚动时加载到内存中?

我需要能够滚动使用滚动条。我搜索了谷歌,我也发现了很多相同的问题。人们希望在Java (在Swing中)显示几年前的大文本1-10 no文件,但没有答案:

  • 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)中找到过解决方案?

EN

回答 2

Stack Overflow用户

发布于 2019-01-30 22:14:02

关键是忘记行号。除非每一行的字节数完全相同,否则行号是一个抽象,需要读取整个文件才能找到下一行的位置。

相反,可以考虑字节位置,因为您可以通过使用RandomAccessFileSeekableByteChannel来查找字节,而无需读取字节之间的字节。当然,您必须将字节位置返回给客户端应用程序,以便在获取下一页时将其返回给服务器。

使用滚动条进行分页是一个巧妙而直观的技巧。最困难的部分是重写滚动条,以显示整个文件,而不是内存中的内容。

注意:只是注意到这个问题有多老.但希望我的评论对下一个搜索者有用。

票数 2
EN

Stack Overflow用户

发布于 2013-08-14 18:52:47

防止内存问题查看大型日志文件的几种可能方法:

  1. 一次使用分页控件并加载日志文件的部分
  2. 子类ObservableList并以类似于按需加载数据的番石榴的方式对其进行备份。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18239138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档