我们正在Tomcat上运行Spring+Hibernate Web应用程序(Java 1.5)。目前,我们使用2GB的堆空间(据我所知,在Solaris 32位服务器上这是最大可能的,尽管服务器有16GB的总内存)。当前的JAVA_OPTS如下:
-XX:MaxPermSize=512m -XX:+UseParallelGC -Xms2048m -Xmx2048m
年轻代+幸存者空间约为600 MB,老年代为1.4 GB。
有时候内存会满,我们需要重新启动Tomcat。以下是一些观察结果:
谢谢, Midhun
-XX:MaxPermSize=512m -XX:+UseParallelGC -Xms2048m -Xmx2048m
年轻代+幸存者空间约为600 MB,老年代为1.4 GB。
有时候内存会满,我们需要重新启动Tomcat。以下是一些观察结果:
- 在服务器活跃运行了约16个小时后,GC花费了大约一个小时进行标记清除(~300次收集-老年代),并花费了5-7分钟进行Scavenging(~1500次收集-年轻代)。
- 有时候老年代在10分钟内就会被填满,我们需要重新启动服务器。目前尚未成功地找到引起问题的线程。
添加-Xmn1024m-这是为了确保年轻代对象不容易晋升到老年代。增加/减少此值的建议是什么?这也将导致更多的年轻代GC和较少的老年代GC。
-XX:+UseParallelOldGC-这是为了使年轻代和老年代GC运行多个线程,以便它们能够更快地进行GC。
2GB的限制是否适用于Solaris服务器?堆空间是否可以增加到超过2GB?
谢谢, Midhun