我问了这个before但是没有得到回应 - 也许它太长了 - 所以我在改写这个问题:
在启动使用Apache Axis2 v.1.5.4的应用程序约3天后, OutOfLangMemoryError 开始出现(堆大小 = 2048 MB )导致降级应用程序服务器( WAS v.7.0.0.7)性能或停止逻辑服务器(进程仍然存在)。
由于某些原因,我必须在Web服务调用过程中放置计时器 = 1秒,在高峰时间,超时发生(在建立或阅读中)。
查看服务器抛出的 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线程终止,是否返回响应,即发生异常?
答案 0 :(得分:1)
我建议您在应用程序中指向安装了所有插件的Visual VM 1.3.2。它将向您展示您的世代堆内存和所有启动的线程中发生的情况。我不能给你答案,但Visual VM会使这个过程更加透明。