这是我的代码:
public void mapTrace(String Path) throws FileNotFoundException, IOException {
FileReader arq = new FileReader(new File(Path));
BufferedReader leitor = new BufferedReader(arq, 41943040);
Integer page;
String std;
Integer position = 0;
while ((std = leitor.readLine()) != null) {
position++;
page = Integer.parseInt(std, 16);
LinkedList<Integer> values = map.get(page);
if (values == null) {
values = new LinkedList<>();
map.put(page, values);
}
values.add(position);
}
for (LinkedList<Integer> referenceList : map.values()) {
Collections.reverse(referenceList);
}
}
这是HashMap结构
Map<Integer, LinkedList<Integer>> map = new HashMap<>();
对于 50mb - 100mb 的跟踪文件,我没有任何问题,但对于更大的文件,我有:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: GC overhead limit exceeded
我不知道反向方法是否会增加内存使用量,LinkedList 是否比其他 List 结构使用更多空间,或者我将列表添加到地图的方式是否占用了更多空间。有谁可以告诉我是什么占用了这么多空间?