最近,我将以下代码从for-each 更改为 Iterator(使用iterator.remove())
它立即解决了我的堆空间内存问题。
有人可以解释iterator.remove()真的有帮助吗?
final Iterator<Entry<String, String>> metaTagIterator = localeDO.getMetaTags().entrySet().iterator();
while (metaTagIterator.hasNext()) {
final Entry<String, String> entry = metaTagIterator.next();
if (ImportUtil.isI18nLiferayLayoutProperty(entry.getKey())) {
layoutProps.setProperty(entry.getKey() + StringPool.UNDERLINE + locale, entry.getValue());
} else if (ImportUtil.isLiferayLayoutProperty(entry.getKey())) {
layoutProps.setProperty(entry.getKey(), entry.getValue());
} else {
myCustomLayoutProps.setProperty(entry.getKey() + StringPool.UNDERLINE + locale, entry.getValue());
}
metaTagIterator.remove();
}