0
我問這個before,但沒有人迴應 - 也許是太長時間了 - 所以我改寫了一個問題:從開始使用的Apache Axis2的v.1.5.4應用
後大約3天,發生OutOfLangMemoryError開始(堆大小 = 2048 MB),導致無論是在降低了應用服務器(WAS v.7.0.0.7)性能或停止邏輯服務器(處理仍然存在)。
OutOfLangMemoryError引起的Apache Axis2的
對於一些原因,我必須把一個計時器 = 1秒的web服務調用過程,在峯值時間,超時發生(或者在建立或讀取)。
尋找在了Javacores和heapdumps由服務器拋出:
似乎有掛 Axis2的線程:
"Axis2 Task" TID:0x00000000E4076200, j9thread_t:0x0000000122C2B100, state:P, prio=5. at sun/misc/Unsafe.park(Native Method) at java/util/concurrent/locks/LockSupport.park(LockSupport.java:173) at java/util/concurrent/SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:433) at java/util/concurrent/SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:334) at java/util/concurrent/SynchronousQueue.take(SynchronousQueue.java:868) at java/util/concurrent/ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:957) at java/util/concurrent/ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917) at java/lang/Thread.run(Thread.java:735)
如何確保Axis2的線程終止,是否回覆或不回覆,即發生異常?
感謝duffymo這樣一個有用的工具,但我主要關心的是通過使用Axis2 API來防止開發階段的問題,因爲它應該在那裏,我嘗試使用Stub,ServiceClient,Transport和ConfigurationContext cleanup()方法,但沒有運氣。也許我錯誤地使用了正確的API。 – guirgis
使用Visual VM指向您的開發計算機並在本地運行應用程序。我不明白你的觀點。 – duffymo
我使用了類似於Visual VM的jca(http://www.alphaworks.ibm.com/tech/jca)來分析Java核心/堆轉儲,看起來問題是由Axi2引起的。 我的觀點是,我在問是否有一些API確保所有資源都被清理(內存,線程)。 我發現29,459條線程在狀態「停放」在問題的時間。 – guirgis