Axis2如何确定已完成特定的后端服务类实例?如何使其称为destroy方法?

问题描述

我正在尝试消除内存泄漏。该应用程序是使用Axis2用Java 8编写的,并且在Tomcat 9中运行。在三十分钟内,另一个应用程序QuickBooks Web Connector对其进行调用,进行五分钟的数据交换,然后再次等待三十分钟。此循环重复两个星期。之后,出现错误消息:java.lang.OutOfMemoryError:Java堆空间

我以这种方式进行内存测量:

    Runtime rt = Runtime.getRuntime();
    log.info(rt.freeMemory() + "_" + rt.totalMemory() + "_" + rt.maxMemory());

这是前三个呼叫的结果:

1)

184282224_347078656_1905262592

480697904_980942848_1905262592

2)

476704880_980942848_1905262592

406780536_991428608_1905262592

3)

404825328_991428608_1905262592

570512728_1026555904_1905262592

根据Axis2 docs

一个Lifecycle.destroy(ServiceContext context)方法 当Axis2决定完成后端服务类的特定实例时,将调用destroy()。

我发现它从未被调用过,这可能是内存泄漏的原因。如何使Axis2决定调用destroy()方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)