我有 Postgres DB,客户端表中有 7500 行,-Xmx8m。
Query query = session.createQuery("select c from Client c");
ScrollableResults resultSet = query.setFetchSize(50).setCacheMode(CacheMode.IGNORE)
.scroll(ScrollMode.FORWARD_ONLY);
int i = 0;
while (resultSet.next()) {
Client client = (Client) resultSet.get(0);
System.out.println(client.getId());
i++;
if (i % 50 == 0) {
session.clear();
Thread.sleep(500);
}
}
session.clear();
resultSet.close();
当我运行我的应用程序时,我得到了这个: .... 4188 java.lang.OutOfMemoryError: GC 开销限制超出
然后我设置了 -Xmx1024m 并运行 jvisualvm 并得到了这个 -
为什么我有很多字符串????谁能解释为什么会发生 OutOfMemory ?