0
我在清除緩存時遇到問題。Eclipselink:使用ReadAllQuery時清除緩存
我有一個簡單的ReadAllQuery。
Session session = ((EntityManagerImpl) em).getActiveSession();
ReadAllQuery query = new ReadAllQuery(Customer.class);
query.setFetchSize(100);
query.useScrollableCursor();
ScrollableCursor cursor = (ScrollableCursor) session.executeQuery(query);
int count = 0;
while (cursor.hasNext()) {
Customer customer = (Customer) cursor.next();
if (++count > 0 && count % 100 == 0) {
System.out.println("Fetched " + count + " entities");
em.getEntityManagerFactory().getCache().evictAll();
}
}
我也是在persistence.xml使用em.clear()
和
<property name="eclipselink.cache.shared.default" value="false"/>
<property name="eclipselink.query-results-cache" value="false"/>
嘗試,但在堆空間不斷擴大。 如何清除實體?
謝謝
首先,您需要確定什麼是持有內存,這可以通過內存分析工具來完成。它可能是驅動程序本身,在這種情況下使用分頁可能是更好的選擇。 – Chris