Weblogic报java.lang.StackOverflowError

<[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1333685110468> <BEA-101017> <[weblogic.servlet.internal.WebAppServletContext@13d1e7e6 - appName: 'adminserver', name: 'admin', context-path: '/admin'] Root cause of ServletException.

java.lang.StackOverflowError


遇到这样的情况很大可能是程序中不断地分配对象超出了JVM的stack size。在程序有递归的情况中更常见。


解决办法:

1.修改程序逻辑(在此不对做说明)

2.增加JVM虚拟机的参数(给每个线程指定stack的更大的size)

-Xss2M


O/S

32-bit Default

64-bit Default

Windows

64 kB

320 kB

Linux

128 kB

1 mB


自己也可以写个程序来重现stackovererror

请参照:http://stackoverflow.com/questions/3700459/how-to-increase-to-java-stack-size


其实我自己不太能在现有应用程序中完全相同的模拟,不知道这是否和JVM垃圾回收中的对象的归类有关? 

具体的情况是,应用中有2叉树,遍历的时候变量会不断的压入stack中,等到读取或遍历树的深度很长的时候,有时候就会报出stackovererror。但是多点几个树出来之后就很难再出现stackovererror了。但是我的问题是必须要模拟出来问题。证明修改增加参数后可行。

所以如果你对这方面有研究又不吝留个言指点一下,真的非常感谢。

希望对这方面有研究的大大们指点!!!!!!

你可能感兴趣的:(jvm,虚拟机,weblogic)