resin 4 运行一段时间后内存溢出,求解

本文记录了一次Resin应用服务器启动过程中遇到的java.lang.OutOfMemoryError: GC overhead limit exceeded错误。该问题通常与垃圾回收频繁或长时间运行有关,文章详细展示了错误堆栈跟踪,涉及com.caucho.vfs.JniSocketImpl等类。
 [11-11-11 17:42:55.278] {main} Resin[id=default] started in 20415ms
java.lang.OutOfMemoryError: GC overhead limit exceeded
        at com.caucho.vfs.JniSocketImpl.<init>(JniSocketImpl.java:47)
        at com.caucho.vfs.JniServerSocketImpl.createSocket(JniServerSocketImpl.java:191)
        at com.caucho.network.listen.TcpSocketLinkListener.allocateConnection(TcpSocketLinkListener.java:1541)
        at com.caucho.network.listen.SocketLinkThreadLauncher.launchChildThread(SocketLinkThreadLauncher.java:72)
        at com.caucho.env.thread.AbstractThreadLauncher.startConnection(AbstractThreadLauncher.java:372)
        at com.caucho.env.thread.AbstractThreadLauncher.runTask(AbstractThreadLauncher.java:403)
        at com.caucho.env.thread.AbstractTaskWorker.run(AbstractTaskWorker.java:160)
        at com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
        at com.caucho.env.thread.ResinThread.run(ResinThread.java:130)
WarningService: java.lang.OutOfMemoryError: GC overhead limit exceeded
[11-11-11 17:46:36.753] {resin-port-null:-1} WarningService: java.lang.OutOfMemoryError: GC overhead limit exceeded
[11-11-11 17:46:36.754] {resin-port-null:-1} java.lang.OutOfMemoryError: GC overhead limit exceeded
                                                at com.caucho.vfs.JniSocketImpl.<init>(JniSocketImpl.java:47)
                                                at com.caucho.vfs.JniServerSocketImpl.createSocket(JniServerSocketImpl.java:191)
                                                at com.caucho.network.listen.TcpSocketLinkListener.allocateConnection(TcpSocketLinkListener.java:1541)
                                                at com.caucho.network.listen.SocketLinkThreadLauncher.launchChildThread(SocketLinkThreadLauncher.java:72)
                                                at com.caucho.env.thread.AbstractThreadLauncher.startConnection(AbstractThreadLauncher.java:372)
                                                at com.caucho.env.thread.AbstractThreadLauncher.runTask(AbstractThreadLauncher.java:403)
                                                at com.caucho.env.thread.AbstractTaskWorker.run(AbstractTaskWorker.java:160)
                                                at com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
                                                at com.caucho.env.thread.ResinThread.run(ResinThread.java:130)
资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在Java开发中,java.lang.OutOfMemoryError(简称OOM)是一个常见问题,通常由JVM内存不足或内存泄漏引发。本文将探讨OOM的成因及解决方法。 JVM内存分配不足:如果JVM初始分配的内存过小,而应用运行时需要更多内存,就容易出现OOM。 内存泄漏:程序中某些不再使用的对象未被垃圾回收机制清理,长期积累会导致内存耗尽。 频繁创建和销毁大量对象:例如在处理大数据量时,一次性加载过多数据到内存,可能会引发OOM。 Hibernate查询优化:一次性查询返回大量数据(如30000条记录)可能引发OOM。解决方案是采用分页查询或延迟加载策略,减少单次查询数据量。 LoadRunner压力测试:对WebLogic服务器进行高并发压力测试时,长时间持续施压可能触发OOM。此时需调整JVM最大堆内存设置,同时优化代码减少内存占用。 Session管理不当:Web应用中,未及时释放不再使用的Session会导致内存消耗过大。应定期清理无效Session,设置合理超时时间或手动调用session.invalidate()释放资源。 调整最大堆内存:通过-Xmx参数设置JVM最大堆内存,如java -Xmx256M aa.class将最大堆内存设为256MB。 Tomcat服务器配置:在catalina.bat中设置JVM初始堆内存和最大堆内存,如-Xms128M -Xmx256M。 Resin服务器配置:在startup.bat中添加JVM参数调整最大堆内存,如-Xms128M -Xmx256M。 PermGen Space内存溢出:用于存储类元数据,加载过多类且未卸载时易出现。解决方案是增加PermGen Space大小,通过设置-XX:PermSize和-XX:MaxPe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值