蚩尤后裔 2012-08-20
这段时间负责的规则引擎,但系统每天java.lang.outofmemory这个错误总是一次次的出现我的面前。对这个问题,我的第一反应也知道run.sh文件有问题,配置的-Xms-Xmm有问题,然后自己看他的配置后,发现他把这两个参数配置run.conf文件中。而自己尝试修改run.conf文件的配置后发现对系统的优化程度无任何帮助。而在run.sh文件的配置的PermSize,maxPermsize不停地被我修改,系统的只是得到短暂的优化,对系统并无任何实际的帮助。
后对系统dump文件进行分析,发现系统本身所需内存已经达到700M多,而设置JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heapsize的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn-Xms-Xmx等选项可进行设置。Heapsize的大小是YoungGeneration和TenuredGeneraion之和。提示:在JVM中如果98%的时间是用于GC且可用的Heapsize不足2%的时候将抛出此异常信息。提示:HeapSize最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
从我们的系统的角度来看默认的内存配置是无法达到要求的,而在run.conf修改文件是无效的,只有在run.sh的java_opt参数做修改后,才对系统有着实际的效果