目前,我们有一个进程获取文件并读取它们,应用 xpath 来查找一些内容,并且第一个文件工作正常,但随后我们开始看到内存消耗非常高,直到到达 OOM,我们检查堆转储并看到axeswalkers的实例正在使用内存,但第一个进程正确完成,其他进程开始花费越来越多的时间,直到我们得到OOM。它是关于如何删除这个对象的一些建议axeswalkers欢迎一些建议。
问候。
我们尝试在验证 xpath 后将对文档和构建器的引用放入 null,但仍在内存中接收该对象。
嗨@MichaelKay,我们正在使用camel-xpath的组件,确切的版本是这个org.apache.camel.springboot:camel-xpath-starter:jar:3.10.0:compile我们下载堆转储,我们看到一个BeanInfo 的行为很奇怪,BeanInfo 是实例保持活动状态的地方。此时,在 spring-boot 上下文中使用 MethodBean,我们就有了一个具有下一个签名的方法
@Handler
public void handler(Exchange exchange, @XPath(value = "//*/@val", resultType = String.class) String val,
@XPath(value = "//*/@int", resultType = String.class) String interval) throws InvalidDateFormatException
那一小部分生成 MethodInfo 的实例,此时我们将应用更改以使 xpath 像往常一样,而不是在方法名称中使用符号,我将返回差异,如果这是原因内存消耗高。
问候。