由Apache Axis2引起的OutOfLangMemoryError

时间:2011-08-01 09:28:47

标签: java axis2 out-of-memory

我问了这个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线程终止,是否返回响应,即发生异常?

1 个答案:

答案 0 :(得分:1)

我建议您在应用程序中指向安装了所有插件的Visual VM 1.3.2。它将向您展示您的世代堆内存和所有启动的线程中发生的情况。我不能给你答案,但Visual VM会使这个过程更加透明。