我发现我的程序正在增加的内存是因为下面的代码,目前我正在阅读一个大约7GB的文件,而且我相信存储在哈希集中的文件是10M的课程,但内存我的程序不断增加到300MB,然后由于OutofMemoryError而崩溃。如果是Hashset问题,我应该选择哪种数据结构?为什么我的hashset如此消耗内存?
if(tagsStr!=null) {
if(tagsStr.contains("a")||tagsStr.contains("b")||tagsStr.contains("c")) {
maTable.add(postId);
}
} else {
if(maTable.contains(parentId)) {
//do sth else, no memories added here
}
}
我认为这不太可能是一个HashSet的问题,除非你把很多的数据。你正在存储的字符串的大小是多少?你是否将整个文件一次读入内存或一行?您在这里提供的数据并不能提供足够的信息来帮助您。 –
表格在撞击之前包含多少物品? –
元素的平均长度/大小是多少? –