我发现我的程序正在增加的内存是因为下面的代码,目前我正在读一个大约7GB的文件,我相信将存储在hashset中的那个比10M的课程,但我的程序的内存持续增加到300MB,然后由于OutofMemoryError而崩溃.如果是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
}
}
Run Code Online (Sandbox Code Playgroud)
你还没告诉我们你在做什么,但是:
BufferedReader(或从大字符串中获取子字符串),每个行都可能有一个大的后备缓冲区 - 您可能希望使用它maTable.add(new String(postId))来避免这种情况简而言之,你很可能没有做错任何事情,但是记忆增加因素的组合对你不利.其中大部分是不可避免的,但第三个可能是相关的.
| 归档时间: |
|
| 查看次数: |
3491 次 |
| 最近记录: |