使用JAX-WS的EXCEPTION_STACK_OVERFLOW

基本上我有一个JAW-WSnetworking服务。 我从外部应用程序批量调用这个数百万次。 大约2000万次调用后,应用程序崩溃,下面的错误。 我已经尝试升级Java版本,尝试在不同的机器上,它都是一样的。

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

Java运行时环境检测到致命错误:

pc = 0x7c90e8e5处的EXCEPTION_STACK_OVERFLOW(0xc00000fd),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是由recursion引起的,或者是嵌套函数不能正确返回。 我不认为这是我的情况,因为我只有一个电话做一些工作,并返回。 愚蠢的问题,但有没有清理堆栈的方式,也许我可以每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) 

这个异常意味着你在Java中遇到了一个错误。 Java永远不会遇到操作系统级别的堆栈溢出,它应该始终抛出自己的StackOverflowException。 您可以使用其中一种方法尝试更新或更旧的JRE,并将其报告给Oracle。

不知道这个答案是否有效,或者你已经做到了。 尝试在几次迭代之后调用垃圾收集器,在需要的作用域中定义&使用变量,并在完成使用后为它们分配空值。