简体   繁体   English

由Apache Axis2引起的OutOfLangMemoryError

[英]OutOfLangMemoryError caused by Apache Axis2

I asked this before but got no response - maybe it was too long - so i'm rephrasing the question: 之前曾问过这个问题但没有得到回应-可能时间太长-所以我改写这个问题:
After about 3 days from starting an application that uses Apache Axis2 v.1.5.4, OutOfLangMemoryError start to occur ( heap size = 2048 MB ) resulting either in degrading the application server ( WAS v.7.0.0.7) performance or stopping the logical server (process still exists). 在启动使用Apache Axis2 v.1.5.4的应用程序大约三天后,开始出现OutOfLangMemoryError堆大小 = 2048 MB ),从而导致应用程序服务器性能下降( WAS v.7.0.0.7)或停止逻辑服务器。 (进程仍然存在)。

For some reasons, i have to put a timer = 1 second on the web service invocation process, in peak time, timeouts occur (either in establishment or reading). 由于某些原因,我必须在Web服务调用过程中放置​​一个计时器 = 1秒,在高峰时间会发生超时(在建立或读取时)。

Looking in the javacores and the heapdumps thrown by the server: 查看服务器抛出的javacore堆转储
It seems that there are hung Axis2 threads: 似乎有悬挂的 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)

How to ensure that Axis2 threads are terminated, whether a response was returned or not ie exception occurred? 如何确保终止Axis2线程,是否返回响应,即是否发生异常?

I'd recommend that you point Visual VM 1.3.2, with all plugins installed, at your application. 我建议您将安装了所有插件的Visual VM 1.3.2指向您的应用程序。 It'll show you what's happening in your generational heap memory and all the threads that are started. 它会向您显示代堆内存和所有启动的线程中发生的情况。 I can't give you the answer, but Visual VM will make the process more transparent. 我无法给您答案,但是Visual VM将使过程更加透明。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM