2010-11-16 55 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

这就是垃圾收集运行时间的样子。内存很快,但垃圾收集会减慢速度,所以没有理由不使用所有可用的内存,并且避免垃圾收集任何东西,除非实际需要。