Javaweb应用内存溢出我用J
最近在做一个网站,使用的编程语言是jsp,Web服务器采用Resin-2。1。6发布,操作系统使用Linux9。0,但是在网站运行过程中发现Java可用内存越来越少,有时程序会报出 ng。OutOfMemoryError的错误,甚至导致Resin死机。
其实这种现象在Java语言中很正常,我们通常称之为Java内存溢出。由于我们在Java程序中声明了好多对象,占用了内存空间,程序结束时没有将这些对象或对象的引用进行释放,从而导致Java虚拟机(JVM)进行垃圾回收(GC)时,不能够回收这些对象。 这样,Java所用的内存就会一直增加,直至溢出,进而导致Resin死机。
导致Java内...全部
最近在做一个网站,使用的编程语言是jsp,Web服务器采用Resin-2。1。6发布,操作系统使用Linux9。0,但是在网站运行过程中发现Java可用内存越来越少,有时程序会报出 ng。OutOfMemoryError的错误,甚至导致Resin死机。
其实这种现象在Java语言中很正常,我们通常称之为Java内存溢出。由于我们在Java程序中声明了好多对象,占用了内存空间,程序结束时没有将这些对象或对象的引用进行释放,从而导致Java虚拟机(JVM)进行垃圾回收(GC)时,不能够回收这些对象。
这样,Java所用的内存就会一直增加,直至溢出,进而导致Resin死机。
导致Java内存溢出的根本原因是Java程序的不规范或不健壮。因此,从根本上解决Java内存溢出的唯一方法就是修改Java程序,及时地释放没用的对象,释放内存空间。
除了这个方法以外,还有一些应急措施,可以临时缓解一下系统的运行。Resin默认情况是死机以后不能访问网站,必须手动重启Resin,但不可能一直看在机器旁边,看Resin有没有死机。
所以这里介绍一种让Resin自重启的方法。
打开Resin的配置文件 nf(一般情况下,该文件在Resin目录的conf文件夹下)。里面有一段内容如下所示:
- http://localhost:8080/ping/ping。
jsp
-
-->
这段内容默认情况下是被注释的。它的功能是让Resin每隔一分钟就测试一下能否访问/ping/ping。jsp文件,测试时间是1s,假如不成功,就重试三次。
假如三次都不成功,Resin就自动重启。所以将这段话下半部分(从"")的注释去掉,然后在Resin的发布目录中新建一个文件夹ping,在ping文件夹下新建一个ping。jsp文件,文件中可以写入简单的一句话,如:。
好,大功告成,启动Resin,这样就不用担心Java内存溢出导致Resin死机了,因为Resin死机后会马上重新启动。
当然,这只是应急措施,不是长久之计。假如从长计议,还是要耐心的更改Java程序!!! 。收起