为什么我在使用Groovy脚本时内存不足?

JFrog支持
2023-01-22 11

有一个已知的与Groovy和ConfigSlurper()相关的内存泄漏错误。解析方法。增加MaxPermSize并不能解决这个问题。

我们通过创建一个虚拟插件来重现这个问题,该插件在每个事件上调用类似的代码。

由于解析的是固定的脚本,因此每次都会得到相同的结果,因此应该尝试找到只解析文件一次的方法。

作为一个例子,你可以在你的脚本中添加如下代码:

defconfig = ConfigHolder。配置类ConfigHolder{静态def config=新的ConfigSlurper()。parse(new File("${System.properties.'artifactory.home'}/etc/plugins/ a.s properties"). tourl ())}

在我们的例子中,“a.s properties”将是一些静态的“*”。要引用的属性文件。您可以在定义之外的静态块中执行slurp方法,以便在加载到内存中时只执行一次。然后你就可以引用结果'config'对象,而不是多次调用slurp。

你应该修改你的代码,对插件中引用的静态资源使用类似的策略,这些静态资源目前正在被多次解析。2022世界杯阿根廷预选赛赛程

这个groovy插件处理这个问题:(声明在第132行,定义在第584行)

这里是关于这个问题的Stackoverflow的链接。