我有一个适用于 CSV 文件的摇摆应用程序。它逐行读取完整文件,计算一些所需的统计数据并显示输出。输出屏幕的上半部分按 JTable 中的顺序显示文件中的每条记录,而下半部分显示基于该数据计算的统计信息。问题是 JVM 占用的内存是文件大小的 4 倍。(在处理 86MB 的文件堆区域时使用 377 MB 的空间 - 使用 jVisualVM 检查内存利用率)。
笔记:
我使用 LineNumberReader 读取文件(由于特定要求,如果这有助于内存使用,我可以更改它)
为了读取每一行,使用 readLine(),然后为该记录的各个字段调用 String 的那一行的 .split(',')。
每条记录存储在 Vector 中,以便在 JTable 中显示,而其他统计信息存储在 JavaBean 类中的 HashMap、TreeMap 和摘要数据中。还使用 JFreeChart 绘制了一张图。
请建议减少内存利用率,因为我需要处理 2GB 文件。