Xpath表达式验证后如何删除axeswalker?

问题描述 投票:0回答:1

目前,我们有一个进程获取文件并读取它们,应用 xpath 来查找一些内容,并且第一个文件工作正常,但随后我们开始看到内存消耗非常高,直到到达 OOM,我们检查堆转储并看到axeswalkers的实例正在使用内存,但第一个进程正确完成,其他进程开始花费越来越多的时间,直到我们得到OOM。它是关于如何删除这个对象的一些建议axeswalkers欢迎一些建议。

问候。

我们尝试在验证 xpath 后将对文档和构建器的引用放入 null,但仍在内存中接收该对象。

xpath memory jvm
1个回答
0
投票

嗨@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 像往常一样,而不是在方法名称中使用符号,我将返回差异,如果这是原因内存消耗高。

问候。

© www.soinside.com 2019 - 2024. All rights reserved.