【发布时间】:2019-05-21 12:17:20
【问题描述】:
我正在使用 java 中的代码处理数据库表,并使用一个字符串值(项目名称,最长可达 1024 个字符)和一个键从该表构造唯一项目列表编号(长)。该表可以包含 100K 或更多的唯一项。代码是这样的:
Map<String, long> getUniqueItems() {
Map<Stirng, long> map = new HashMap<>();
recordsItr = readDatabaseRecord();
while(recordItr.hasNext()) {
RecordItem item = recordItr.next();
map.put(item.getName(), item.getValue();
}
return map;
}
但是,如果唯一记录的数量很大,那么我当然会在应用程序中耗尽内存。在构建它时如何避免外出或记忆。最后,一旦我得到地图,我就会用它来遍历它的条目并对每个项目做一些事情。
谢谢,
阿尔萨兰
【问题讨论】:
-
一般来说,不要把整件事都吞进记忆里;遍历数据库
ResultSet(或等效)。 -
一般来说:100k 个条目应该不是什么大问题,除非条目在某些方面是巨大。此处可能需要更多信息。
-
你可以在ResultSet上使用
setFetchSize()方法:stackoverflow.com/questions/858836/… -
您运行的是 64 位还是 32 位虚拟机?
标签: java dictionary out-of-memory