我使用運行在linux服務器上的java編碼服務器端應用程序。 我使用hibernate打開會話到數據庫,使用本機sql來查詢它,並總是通過try,catch,最後關閉這個會話。使用休眠時的內存使用率高
我的服務器查詢數據庫使用休眠與非常高的頻率。
我已經定義MaxHeapSize爲3000M,但它通常在RAM上使用2.7GB,它可以減少但比增加慢。有時它會增長到3.6GB的內存使用量,超過我的MaxHeapSize定義時啓動。
當使用的內存是3.6GB時,我嘗試使用-jmap命令轉儲它並獲得了一個大小爲1.3GB的heapdump。
即時通訊使用的Eclipse MAT來分析它,這裏是從MAT 支配樹我覺得休眠的問題,我有這麼多org.apache.commons.collections.map.AbstractReferenceMap $ ReferenceEntry這樣。它可能不能被垃圾收集處理或可以緩慢。
我該如何解決?
你能教我多一點嗎?我幾乎沒有關於Oracle數據庫交互的經驗。 – Viet
您需要獲取N個條目,更新它們,然後獲取下一批,等等。 –
我仍然困惑,在我的查詢「更新..在哪裏..在(...)」,在查詢列表很小,它不能達到1000 當我在Eclipse MAT來支配樹的葉子展開,我覺得我的選擇查詢(‘sqlQueryCheckSet’在我的代碼),許多的它,我只是想它 – Viet