十万火急!!请教Resin+IIS服务器内存泄漏问题解决方法!

来源:百度知道 编辑:UC知道 时间:2024/05/27 19:01:36
现有一台服务器内存2G,因需要跑asp,又需要跑jsp,故采用Resin+IIS实现需求。在配置运行服务后,发现resin服务的内存消耗有明显问题,正常重启后,运行没有问题,但如果运行一段时间,就不能用了,出现java.lang.OutOfMemoryError异常,jvm日志猛涨,服务已无法进行。
请问哪位有过类似经验的高手,帮忙解决一下,我的qq:475501616
早已增大内存空间,如"C:\resin-ee-3.0.6\bin\httpd.exe" -service "-java_home" "C:\j2sdk1.4.2_01" "-Xms512m" "-Xmx512m" "-Xrs",仍不起作用

这个jsp网站以前一直正常运行吗?是跟iis整合后才出现这种情况的?

如果是新站,以前没有通过长期运行检验过,我认为比较大的可能是你的程序写得有问题,造成了内存泄漏。
考虑一下你的jsp网站是否加载了大对象,或者提供文件上传下载功能,等等。程序中可能不小心保持了大量资源引用而没有释放(譬如大对象,线程,jdbc连接等),GC也不可能主动释放它,这样就形成了内存泄漏,最终造成内存分配不足而溢出错误。

另外,你可以参看一下caucho公司关于内存泄漏的wiki
http://wiki.caucho.com/OutOfMemoryError

整合后是会出现iis默认页失效的问题,由于isapi传给resin服务器的是一个具体的jsp页面。而iis不会去处理jsp。所以就出现了默认页失效的问题。目前还没有看到那里有这个问题的解决办法。

在启动WebLogic Server时,如果试图调用大量的类,JDK1.3有可能会抛出内存溢出错误。甚至还有大量的内存空间可以使用的时候也会显示这个错误。如果你遇到一个java.lang.OutOfMemory错误时,增大下列JMS选项的值:
java -XX:MaxpermSize=<Value>
这里的<Value>是以千字节为单位的数字。
在JDK1.3.0中,JVM为MaxPermSize设置的默认值是32M。在JDK1.3.1中,默认值是64M。