OutOfMemory exception when attempting to compile JSP pages
richieb Dec 15, 2003 8:22 AMI'm running Jboss 3.2.3 on a Debian Linux box (kernel 2.2.20) with IBM's JVM 1.4.1. I have one Web application deployed, with several clients publishing messages on JMS (every few seconds). After the system is up for a day or so, I start getting OutOfMemory exceptions when I try to get to pages that haven't yet been compiled. Here is the typical stack trace:
2003-12-15 08:53:24,624 ERROR [org.apache.struts.action.RequestProcessor] No action instance for path /message_browser could be created
java.lang.VerifyError: (class: com/javtech/tradescope/ui/actions/mb/MessageBrowserTabAction) Out Of Memory
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java(Compiled Code))
at java.lang.Class.getConstructor0(Class.java(Compiled Code))
at java.lang.Class.newInstance0(Class.java(Compiled Code))
at java.lang.Class.newInstance(Class.java(Compiled Code))
at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:206)
at org.apache.struts.action.RequestProcessor.processActionCreate(RequestProcessor.java:324)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:268)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1422)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:505)
The weird thing is that pages that were already compiled work fine and JMX console shows that there is plenty of free memory.
Looking though the logs I see the first OutOufMemory exception being this:
2003-12-12 21:12:08,479 ERROR [STDERR] java.lang.OutOfMemoryError: heap allocation failed
2003-12-12 21:12:08,480 ERROR [STDERR] at java.net.PlainDatagramSocketImpl.receive(Native Method)
2003-12-12 21:12:08,480 ERROR [STDERR] at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java(Compiled Code))
2003-12-12 21:12:08,480 ERROR [STDERR] at java.net.DatagramSocket.receive(DatagramSocket.java(Compiled Code))
2003-12-12 21:12:08,480 ERROR [STDERR] at org.opennms.protocols.snmp.SnmpPortal$1.run(SnmpPortal.java(Compiled Code))
2003-12-12 21:12:08,480 ERROR [STDERR] at java.lang.Thread.run(Thread.java:568)
2003-12-12 21:12:11,486 ERROR [STDERR] java.lang.OutOfMemoryError: heap allocation failed
2003-12-12 21:12:11,487 ERROR [STDERR] at java.net.PlainDatagramSocketImpl.receive(Native Method)
2003-12-12 21:12:11,487 ERROR [STDERR] at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java(Compiled Code))
2003-12-12 21:12:11,487 ERROR [STDERR] at java.net.DatagramSocket.receive(DatagramSocket.java(Compiled Code))
2003-12-12 21:12:11,487 ERROR [STDERR] at org.opennms.protocols.snmp.SnmpPortal$1.run(SnmpPortal.java(Compiled Code))
2003-12-12 21:12:11,487 ERROR [STDERR] at java.lang.Thread.run(Thread.java:568)
I can run GC from the JMX-Console, but it does not seem to do anything.
Any suggestions would be greatly appreciated.
...richie