Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Apache Axis2导致的OutofLongMemoryError_Java_Axis2_Out Of Memory - Fatal编程技术网

Java Apache Axis2导致的OutofLongMemoryError

Java Apache Axis2导致的OutofLongMemoryError,java,axis2,out-of-memory,Java,Axis2,Out Of Memory,我问了这个问题,但没有得到回应——可能时间太长了——所以我重新表述了这个问题: 在启动使用Apache Axis2 v.1.5.4的应用程序大约3天后,会出现OutofLongMemoryError错误(堆大小=2048 MB),导致应用程序服务器性能降低(WASv.7.0.0.7)或停止逻辑服务器(进程仍然存在). 出于某些原因,我必须在web服务调用过程中设置一个计时器=1秒,在高峰时间,会发生超时(在建立或读取过程中) 查看服务器抛出的javacores和heapdump: 似乎有挂起的A

我问了这个问题,但没有得到回应——可能时间太长了——所以我重新表述了这个问题:
在启动使用Apache Axis2 v.1.5.4的应用程序大约3天后,会出现OutofLongMemoryError错误(堆大小=2048 MB),导致应用程序服务器性能降低(WASv.7.0.0.7)或停止逻辑服务器(进程仍然存在).

出于某些原因,我必须在web服务调用过程中设置一个计时器=1秒,在高峰时间,会发生超时(在建立或读取过程中)

查看服务器抛出的javacoresheapdump
似乎有挂起的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任务”TID:0x00000000E4076200,j9thread_t:0x0000000122C2B100,状态:P,优先级=5。 在太阳/杂项/不安全停车场(本机方法) 位于java/util/concurrent/locks/LockSupport.park(LockSupport.java:173) 位于java/util/concurrent/SynchronousQueue$TransferStack.waitfulfill(SynchronousQueue.java:433) 位于java/util/concurrent/SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:334) 位于java/util/concurrent/SynchronousQueue.take(SynchronousQueue.java:868) 位于java/util/concurrent/ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:957) 位于java/util/concurrent/ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917) 位于java/lang/Thread.run(Thread.java:735)
如何确保Axis2线程终止,无论是否返回响应,即是否发生异常?

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

谢谢duffymo,这是一个非常有用的工具,但我主要关心的是通过使用Axis2 API在开发阶段防止出现问题,因为它应该存在,我尝试使用存根、ServiceClient、Transport和ConfigurationContext cleanup()方法,但没有成功。也许我用错了正确的API。使用Visual VM指向您的开发机器并在本地运行应用程序。我不明白你的意思,我用jca(),类似于visualvm,来分析java内核/堆转储,似乎问题是由Axi2引起的。我想问的是,是否有一些API可以确保所有资源(内存、线程)都被清除。在出现问题时,我发现有29459个线程的状态为“已停止”。