我在读取内存跟踪时遇到问题。我已阅读并在 map 上保存了页面及其引用
map 结构:
Map<Integer, List<Integer>> map = new HashMap<>();
然后我再次读取文件并从整数列表中删除引用
FileReader arq = new FileReader(new File(Path));
BufferedReader reader = new BufferedReader(arq, 41943040);
while ( (std = reader.readLine()) != null ) {
requestedPage = Integer.parseInt(std, 16);
//do something
M.map.get(requestedPage).remove(0));
}
问题是删除这些引用花费的时间太长,对于大的跟踪,删除引用需要数小时。有人有其他解决方案吗?
谢谢!
最佳答案
我认为如果 remove(0)
是您要在此列表上进行的唯一删除操作,那么 LinkedList 是一个更好的数据结构:
尝试:
Map<Integer, LinkedList<Integer>> map = new HashMap<Integer, LinkedList<Integer>>();
关于java - remove() 方法太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12134717/