使用JAX-WS的EXCEPTION_STACK_OVERFLOW

时间:2011-12-28 15:08:54

标签: java windows exception

基本上我有一个JAW-WS Web服务。我从外部应用程序批量调用了数百万次。大约2000万次调用后,应用程序崩溃并出现以下错误。我尝试升级java版本,尝试在不同的机器上运行它们都是一样的。

  

发生了不可恢复的堆栈溢出。

     

Java Runtime Environment检测到致命错误:

     

EXCEPTION_STACK_OVERFLOW(0xc00000fd)at pc = 0x7c90e8e5,pid = 9396,   TID = 9000

     

JRE版本:6.0_29-b11 Java VM:Java HotSpot(TM)客户端VM   (20.4-b02混合模式,共享windows-x86)有问题的框架:C   [NTDLL.DLL + 0xe8e5]

     

包含更多信息的错误报告文件保存为:U:   hs_err_pid9396.log

     

如果您想提交错误报告,请访问:   http://java.sun.com/webapps/bugreport/crash.jsp

我已经读过EXCEPTION_STACK_OVERFLOW是由递归或嵌套函数引起的,这些函数没有正确返回。我不认为这是我的问题,因为我只有一个调用可以做一些工作并返回。愚蠢的问题,但有没有办法清理堆栈,也许我可以每x小时做一次?

我设法获得了服务器2008和最新JRE的全新安装。当我在这台机器上运行相同的应用程序时,我收到以下消息。我确定最好看看这个错误而不是最后一个,因为这是应用程序将部署在的实时框。感谢

28-Dec-2011 14:34:58 com.sun.xml.internal.ws.model.RuntimeModeler getRequestWrap

perClass
INFO: Dynamically creating request wrapper Class Professional
Services.jaxws.CleanResponse
28-Dec-2011 14:34:58 com.sun.xml.internal.ws.model.RuntimeModeler getResponseWra
pperClass
INFO: Dynamically creating response wrapper bean Class Professional
Services.jaxws.CleanResponse
Exception in thread "Thread-4" java.lang.OutOfMemoryError: unable to create new
native thread
        at java.lang.Thread.start0(Native Method)
        at java.lang.Thread.start(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.addIfUnderMaximumPoolSize(Unk
nown Source)
        at java.util.concurrent.ThreadPoolExecutor.execute(Unknown Source)
        at sun.net.httpserver.ServerImpl$Dispatcher.handle(Unknown Source)
        at sun.net.httpserver.ServerImpl$Dispatcher.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

2 个答案:

答案 0 :(得分:2)

此异常表示您遇到了Java中的错误。 Java永远不会遇到操作系统级别的堆栈溢出,它应该总是抛出自己的StackOverflowException。您可以使用其中之一来尝试更新或更旧的JRE,并将其报告给Oracle。

答案 1 :(得分:0)

不确定这个答案是否有效,或者你已经完成了。尝试在几次迭代后调用垃圾收集器,定义&仅在所需范围内使用变量&一旦完成使用,就为它们分配空值。