Does any1 have any idea what could be the cause of these java errors?
The java version should be 1.4.1_05. This is related to PeopleSoft.
"VM Thread" prio=5 tid=0x00B8EF28 nid=0x5f8 runnable
"VM Periodic Task Thread" prio=10 tid=0x00CF4CF8 nid=0x648 waiting on condition
"Suspend Checker Thread" prio=10 tid=0x00CF5760 nid=0x64c runnable
<Nov 17, 2011 1:41:46 PM GMT+08:00> <Error> <HTTP> <BEA-101017> <[ServletContext(id=21840659,name=PORTAL,context-path=)] Root cause of ServletException.
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start(Native Method)
at bea.jolt.NwHdlr.start_threads(NwHdlr.java:1982)
at bea.jolt.NwHdlr.openConnection(NwHdlr.java:879)
at bea.jolt.CMgr.connect(CMgr.java:71)
at bea.jolt.JoltSession.logon(JoltSession.java:246)
at bea.jolt.JoltSession.<init>(JoltSession.java:125)
at psft.pt8.net.JoltSessionWrapper.<init>(JoltSessionWrapper.java:67)
at psft.pt8.net.JoltSessionPool.createConnection(JoltSessionPool.java:373)
at psft.pt8.net.JoltSessionPool.getJoltSession(JoltSessionPool.java:220)
at psft.pt8.net.NetSession.getJoltSession(NetSession.java:484)
at psft.pt8.net.NetReqRepSvc.sendRequest(NetReqRepSvc.java:526)
at psft.pt8.net.NetService.requestService(NetService.java:141)
at psft.pt8.net.NetReqRepSvc.requestService(NetReqRepSvc.java:328)
at psft.pt8.net.NetSession.connect(NetSession.java:269)
at psft.pt8.net.NetSession.<init>(NetSession.java:203)
at psft.pt8.jb.JBEntry.connectWithBlob(JBEntry.java:720)
at psft.pt8.jb.JBEntry.connect(JBEntry.java:654)
at psft.pt8.auth.PSAuthenticator.authenticate(PSAuthenticator.java:546)
at psft.pt8.psreports.onLogin(psreports.java:216)
at psft.pt8.psreports.onAction(psreports.java:321)
at psft.pt8.psreports.service(psreports.java:181)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at psft.pt8.psfilter.doFilter(psfilter.java:71)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6372)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3643)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
>
You're creating too many threads for the memory available for thread stacks. You can reduce the number of threads you create, or decrease their default stack size from the (generous) default. -XX:ThreadStackSize=128
would make it 128KB. Of course, too little stack and you may hit StackOverflowError
(heh) if you have a particularly deep method call.
Since you have to make a lot of threads (thousands) to hit this with a default stack size, my gut says your best solution is #1. You don't need thousands of threads in your app.