我编写了一个JavaFx应用程序来查看日志文件。这些文件在一个新的选项卡中打开,我运行文本并将其添加到列表视图中。我创建了一个单元格工厂来突出显示列表文件中的某些文本,这一切都在工作。
问题是日志文件在800到1300 is之间。同时打开3-4,JVM就达到了内存限制。
是否有另一种方法可以使当前显示在内存中的列表视图中的文本只显示在内存中,并且在我滚动时加载到内存中?
我需要能够滚动使用滚动条。我搜索了谷歌,我也发现了很多相同的问题。人们希望在Java (在Swing中)显示几年前的大文本1-10 no文件,但没有答案:
我看过分页,但我需要能够使用滚动条,我需要它体面。用户不应该知道某些部分不在内存中。它们滚动并显示下一行。
有没有人在Java (Swing或JavaFX)中找到过解决方案?
发布于 2019-01-30 22:14:02
关键是忘记行号。除非每一行的字节数完全相同,否则行号是一个抽象,需要读取整个文件才能找到下一行的位置。
相反,可以考虑字节位置,因为您可以通过使用RandomAccessFile或SeekableByteChannel来查找字节,而无需读取字节之间的字节。当然,您必须将字节位置返回给客户端应用程序,以便在获取下一页时将其返回给服务器。
使用滚动条进行分页是一个巧妙而直观的技巧。最困难的部分是重写滚动条,以显示整个文件,而不是内存中的内容。
注意:只是注意到这个问题有多老.但希望我的评论对下一个搜索者有用。
发布于 2013-08-14 18:52:47
防止内存问题查看大型日志文件的几种可能方法:
这两种方法只将当前视图所需的日志文件数据加载到内存中,而不是将整个日志文件加载到内存中。
https://stackoverflow.com/questions/18239138
复制相似问题