Java内存溢出导致服务器死机之应急解决方案
2007-09-11 14:19
330 查看
近在做一个网站,使用的编程语言是JSP,Web服务器采用Resin-2.1.6发布,操作系统使用Linux9.0,但是在网站运行过程中发现 Java可用内存越来越少,有时程序会报出java.lang.OutOfMemoryError的错误,甚至导致Resin死机。
其实这种现象在Java语言中很正常,我们通常称之为Java内存溢出。由于我们在Java程序中声明了好多对象,占用了内存空间,程序结束时没有将这些对象或对象的引用进行释放,从而导致Java虚拟机(JVM)进行垃圾回收(GC)时,不能够回收这些对象。这样,Java所用的内存就会一直增加,直至溢出,进而导致Resin死机。
导致Java内存溢出的根本原因是Java程序的不规范或不健壮。因此,从根本上解决Java内存溢出的唯一方法就是修改Java程序,及时地释放没用的对象,释放内存空间。
除了这个方法以外,还有一些应急措施,可以临时缓解一下系统的运行。Resin默认情况是死机以后不能访问网站,必须手动重启Resin,但不可能一直看在机器旁边,看Resin有没有死机。所以这里介绍一种让Resin自重启的方法。
打开Resin的配置文件resin.conf(一般情况下,该文件在Resin目录的conf文件夹下)。里面有一段内容如下所示:
<!--
- Ping to test if the web server is still up. You can uncomment this
- and point it to pages on the webserver that exercise your main
- logic (like database access). If the GET fails, it will restart
- the server. This will catch deadlocks, but not JDK freezes.
- <ping sleep-time=’1m’ retry-count=’3’ retry-time=’1s’>
- <url>
http://localhost:8080/ping/ping.jsp</url>
- </ping>
-->
这段内容默认情况下是被注释的。它的功能是让Resin每隔一分钟就测试一下能否访问/ping/ping.jsp文件,测试时间是1s,如果不成功,就重试三次。如果三次都不成功,Resin就自动重启。所以将这段话下半部分(从"<ping "到"</ping>")的注释去掉,然后在Resin的发布目录中新建一个文件夹ping,在ping文件夹下新建一个ping.jsp文件,文件中可以写入简单的一句话,如:<% out.println("Hello world");%>。
好,大功告成,启动Resin,这样就不用担心Java内存溢出导致Resin死机了,因为Resin死机后会马上重新启动。
当然,这只是应急措施,不是长久之计。如果从长计议,还是要耐心的更改Java程序!!!
虚拟主机 空间租用 免费空间 ASP空间 PHP空间 NET空间 ASP虚拟主机 PHP虚拟主机 NET虚拟 BLOG虚拟主机 全能虚拟主机 全能空间 数据库 程序虚拟主机
全国第一家虚拟主机:支持伪静态.有利于提高排名
15G全能空间年付500元/月付50元 可免费试用
5GB 独立WEB空间、5GB 企业邮箱空间、5GB MSSQL数据库
IIS连接数据 500 个、500GB/月流量、共享日志文件空间
企业邮箱功能
赠送5GB 超大企业邮箱,500个Email企业邮箱用户
自动回复、自动转发、POP3、SMTP收发信、SMTP发信认证
邮件过滤、邮件拒收、邮件夹管理、邮件域管理、定制邮件数
数据库功能
支持5GB MSSQL数据库空间,5个用户数据库、Access
主机功能支持
采用安全稳定的Win2003 .net2.0 架构
支持ASP、PHP、ASP.NET、PERL等脚本、支持自定义CGI
全面支持.net2.0版本,独立的Application应用池,
支持SSI(Shtml),支持FrontPage扩展
可免费自行绑定5个域名、500个解析、500个子域名
其实这种现象在Java语言中很正常,我们通常称之为Java内存溢出。由于我们在Java程序中声明了好多对象,占用了内存空间,程序结束时没有将这些对象或对象的引用进行释放,从而导致Java虚拟机(JVM)进行垃圾回收(GC)时,不能够回收这些对象。这样,Java所用的内存就会一直增加,直至溢出,进而导致Resin死机。
导致Java内存溢出的根本原因是Java程序的不规范或不健壮。因此,从根本上解决Java内存溢出的唯一方法就是修改Java程序,及时地释放没用的对象,释放内存空间。
除了这个方法以外,还有一些应急措施,可以临时缓解一下系统的运行。Resin默认情况是死机以后不能访问网站,必须手动重启Resin,但不可能一直看在机器旁边,看Resin有没有死机。所以这里介绍一种让Resin自重启的方法。
打开Resin的配置文件resin.conf(一般情况下,该文件在Resin目录的conf文件夹下)。里面有一段内容如下所示:
<!--
- Ping to test if the web server is still up. You can uncomment this
- and point it to pages on the webserver that exercise your main
- logic (like database access). If the GET fails, it will restart
- the server. This will catch deadlocks, but not JDK freezes.
- <ping sleep-time=’1m’ retry-count=’3’ retry-time=’1s’>
- <url>
http://localhost:8080/ping/ping.jsp</url>
- </ping>
-->
这段内容默认情况下是被注释的。它的功能是让Resin每隔一分钟就测试一下能否访问/ping/ping.jsp文件,测试时间是1s,如果不成功,就重试三次。如果三次都不成功,Resin就自动重启。所以将这段话下半部分(从"<ping "到"</ping>")的注释去掉,然后在Resin的发布目录中新建一个文件夹ping,在ping文件夹下新建一个ping.jsp文件,文件中可以写入简单的一句话,如:<% out.println("Hello world");%>。
好,大功告成,启动Resin,这样就不用担心Java内存溢出导致Resin死机了,因为Resin死机后会马上重新启动。
当然,这只是应急措施,不是长久之计。如果从长计议,还是要耐心的更改Java程序!!!
虚拟主机 空间租用 免费空间 ASP空间 PHP空间 NET空间 ASP虚拟主机 PHP虚拟主机 NET虚拟 BLOG虚拟主机 全能虚拟主机 全能空间 数据库 程序虚拟主机
全国第一家虚拟主机:支持伪静态.有利于提高排名
15G全能空间年付500元/月付50元 可免费试用
5GB 独立WEB空间、5GB 企业邮箱空间、5GB MSSQL数据库
IIS连接数据 500 个、500GB/月流量、共享日志文件空间
企业邮箱功能
赠送5GB 超大企业邮箱,500个Email企业邮箱用户
自动回复、自动转发、POP3、SMTP收发信、SMTP发信认证
邮件过滤、邮件拒收、邮件夹管理、邮件域管理、定制邮件数
数据库功能
支持5GB MSSQL数据库空间,5个用户数据库、Access
主机功能支持
采用安全稳定的Win2003 .net2.0 架构
支持ASP、PHP、ASP.NET、PERL等脚本、支持自定义CGI
全面支持.net2.0版本,独立的Application应用池,
支持SSI(Shtml),支持FrontPage扩展
可免费自行绑定5个域名、500个解析、500个子域名
相关文章推荐
- windows下nginx启动一闪而过(端口占用导致win7下无法启动nginx服务器的解决方案)
- 架构演变-访问量由低到高导致服务器访问缓慢的逐步解决方案
- 服务器维护中处理高并发导致的一些常见问题解决方案
- 端口占用导致win7下无法启动nginx服务器的解决方案
- 一个因瑞星安全软件驱动文件(rfwtdi.sys)导致服务器间隔性蓝屏或死机
- 使用axis2构建webservice时客户端内存不断增长导致应用服务器频繁重启的解决方案
- 多线程程序切换输入法导致死机的问题及解决方案
- 使用任务集合来限制高并发导致服务器超负载的解决方案
- java服务器集群高并发场景下发布导致load高的解决方案
- 导致服务器死机的原因集锦
- 搭建IIS服务器80端口却已被占用的问题和用了Sc config http start= disabled命令导致HTTP服务无法启动的解决方案
- NUMA导致的MySQL服务器SWAP问题分析与解决方案
- NUMA导致的MySQL服务器SWAP问题分析与解决方案
- Slickedit 导致系统挂起或死机的解决方案
- ipcs 共享内存导致服务器死机、服务无法启动处理
- 服务器更新dll后导致网站崩溃,重启iis也无效的一种解决方案(downmoon)
- java服务器集群高并发场景下发布导致load高的解决方案
- 使用axis2构建webservice时客户端内存不断增长导致应用服务器频繁重启的解决方案
- 服务器双网卡导致的网络故障及解决方案