2010-11-16 54 views
0

嗨 我遇到一個奇怪的現象。Unix/Linux中的JVM內存管理

我有一個由Hibernate ORM的方式查詢數據庫的Java應用程序。

HP-UX sgx842 B.11.11 U 9000/800 888281448 unlimited-user license後,我啓動服務器,使幾千幾個查詢記錄堆大小穩定在800MB。

Linux sglx481.amk.st.com 2.6.9-34.ELsmp #1 SMP Fri Feb 24 16:56:28 EST 2006 x86_64 x86_64 x86_64 GNU/Linux內存爆炸,直到最大JVM內存(由-Xmx選項設置)。但是,系統不會放慢速度,仍然可以執行查詢數據。沒有OutOfMemoryError例外。儘管我沒有使用過工具,但性能沒有明顯下降。

Windows中也沒有問題。

在休眠我不手動使用註釋,但打開和關閉會話和tranasction。

sessionFactory = new Configuration().configure(CONFIG_FILE_LOCATION).buildSessionFactory(); 
session = sessionFactory.getSessionFactory().openSession(); 


session.beginTransaction(); 
... 
session.close(); 

回答

1

這就是垃圾收集運行時間的樣子。內存很快,但垃圾收集會減慢速度,所以沒有理由不使用所有可用的內存,並且避免垃圾收集任何東西,除非實際需要。