2013-10-07 75 views
0

如何計算標準查詢返回的結果集的字節大小(不是數字行)? 我們收到內存不足異常,並且在分析heapdump時發現org.hibernate.impl.sessionimpl對象是最臃腫的對象。我們有一個非常複雜的查詢被執行多次,並返回> 4000行,每列有150列。我們想通過嘗試獲取結果集的大小來查明這是否是有問題的查詢?如何計算hibernate的Criteria查詢結果集的大小?

同時,我們正在嘗試session.clear(將這項工作)在結果集被提取後。 有沒有其他的步驟可以減少sessionimpl在內存中的大小?謝謝

回答

0

您可以關注Calculate size of Object in Java回答。
但是,如果你有記憶問題最有可能更好的解決方案可能是:

  1. 最大化內存堆
  2. 使用,以避免所有的內存問題

我喜歡的解決方案2號,因爲它是明確的;第一個還是會導致內存問題。

+0

謝謝我們正在最大限度地利用內存堆。我將檢查可滾動的結果。 –

+0

yw!如果回答關閉問題,請考慮upvote或接受 –

0

,你可以嘗試使用Hibernate Statistics When Optimizing Queries

參見上述這對如何在使用休眠統計數據很能說明問題的鏈接。

只是FYI。

SessionFactory sessionFactory = getSessionFactoryForApplication(); 
Statistics stats = sessionFactory.getStatistics(); 
stats.setStatisticsEnabled(true); 

希望這有助於找到代碼中OM錯誤的原因。

+0

謝謝我將檢查hibernate統計信息。 –

相關問題