2011-12-28 7 views
2

基本的に私はJAW-WS Webサービスを持っています。私はこれを外部アプリケーションから何百万回もバッチで呼びます。約2000万コール後、アプリケーションは以下のエラーでクラッシュします。私は、Javaのバージョンをアップグレードしようとしました、別のマシンとそのすべてを同じにしようとしています。JAX-WSを使用したEXCEPTION_STACK_OVERFLOW

回復不能なスタックオーバーフローが発生しました。

致命的なエラーには、Javaランタイム環境によって検出された:

EXCEPTION_STACK_OVERFLOW(0xc00000fd)PC = 0x7c90e8e5、PID = 9396、 TID = 9000

JREバージョンで:6.0_29-B11のJava VM :Javaのホットスポット(TM)クライアントVM (20.4-B02混在モード、共有ウィンドウ-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 - 12月 - 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

は、この例外は、Javaのバグが発生したことを意味します。 JavaはOSレベルのスタックオーバーフローに遭遇することはありません。代わりに、常に独自のStackOverflowExceptionをスローする必要があります。これらのいずれかを使用して実行できることは、新しいJREまたはそれ以前のJREを試して、Oracleに報告することです。

+0

本当にうわーですか?私は何もできないということですか?私は周りの唯一の仕事は、6時間後にアプリケーションをシャットダウンし、再びそれをバックアップ、cron job ot windowsスケジューラを開始することです。私はこれを達成するために何かできることはありますか? また、使用するJREのバージョン、つまりこのエラーが発生していないバージョンを確認するにはどうすればよいですか。 Oracleはバグを提出したら教えてくれますか? – user1119522

+0

バグ記者に行って、あなたが見ているものを見てください。一般的にはあまり役に立ちません。多くの選択肢はありませんが、いくつかの異なるバージョンをダウンロードして実験を試みます。私は非常に再起動のものであなたを助けることができない、別の質問を開きます。 – bmargulies

0

この回答がうまくいかないかどうかわかっているかもしれません。少数の繰り返しの後でガベージコレクタを呼び出すようにして、&変数を必要なスコープで使用するように定義してください。&は、その使用が完了するとnull値が割り当てられます。

+1

は大量のデータをメモリに残さないでください – Aniruddha

+0

私はnetbeansを使ってアプリケーションのプロファイルを実行しました。ヒープが最大16MBに達するとGCが定期的に呼び出されているのがわかります。私はまた、Webサービスが返す直前に変数をnullにするのに疲れていますが、まだ運がありません:(...アドバイスありがとう。それは少なくとも私がトラブルシューティングの面で正しい道にいることを証明するのに役立ちます。 – user1119522

+1

コードを投稿することは可能ですか?またヒープサイズを増やす – Aniruddha

関連する問題