以下是抛出java.lang.OutOfMemoryError: Java heap space
的代码:
StringBuilder sb = new StringBuilder();
for (int i = 0; i< ranks.size(); i++) {
Map<String, String> map = ranks.get(i);
sb.append("SELECT ");
int iter = 0;
for (String key : map.keySet()) {
if (key.equals("ware_md5")) {
sb.append("'").append(map.get(key)).append(" ' AS ").append(key);
}
else {
sb.append(map.get(key)).append(" AS ").append(key);
}
if (iter < map.keySet().size() - 1) {
sb.append(",");
}
iter++;
}
if (i < ranks.size() - 1) {
sb.append(" UNION ALL ");
}
}
return sb.toString();
'rank'ArrayList包含大约30 000个值
有没有办法重写这段代码以避免此错误?
答案 0 :(得分:4)
使用更大的堆启动JVM。以java -Xmx256M为例,对于256MB堆的示例。
答案 1 :(得分:1)
new StringBuilder(100_000)
- 至少更快AS key
不需要,但是对于第一个工会。SortedMap
:密钥始终采用相同的顺序。ranks.get(i)