【发布时间】:2013-11-07 12:42:21
【问题描述】:
对于学校作业,我需要为内存访问创建一个模拟。首先,我需要阅读 1 个或多个跟踪文件。每个都包含每次访问的内存地址。示例:
0 F001CBAD
2 EEECA89F
0 EBC17910
...
第一个整数表示读/写等,然后是十六进制内存地址。有了这些数据,我应该运行一个模拟。所以我的想法是将这些数据解析为ArrayList<Trace>(现在我使用Java),其中跟踪是一个简单的类,包含内存地址和访问类型(只是一个字符串和一个整数)。之后我计划遍历这些数组列表来处理它们。
问题甚至在解析时,堆空间不足。每个跟踪文件约为 200MB。我最多有 8 个。这意味着我要“缓存”的数据至少为 ~1.6 GB?让我感到困惑的是,我只解析 1 个文件,而根据我的任务管理器,java 正在使用 2GB ...
有什么更好的方法来做到这一点?
可以在Code Review找到代码sn-p
【问题讨论】:
-
您需要将所有行都保存在内存中才能完成其余的工作,或者是否可以在读取后处理该行,然后丢弃您的
Trace对象?
标签: java performance io