tHashOutput / tHashInput中的Talend内存泄漏

时间:2017-08-02 16:28:45

标签: talend

我在Talend joblet中有一个半慢速的内存泄漏。我在一个joblet中间使用了一个tHashOutput / tHashInput对,因为我需要找出流中有多少行。因此,我将它们推入tHashOutput,然后从globalMap引用tHashOutput_1_NB_LINE。

joblet flow

我认为我认为是正确的选择:

  • allRows - "追加"是假的
  • tHashinput_1 - "阅读后清除"是真的

然而,当我运行一段时间并使用Eclipse Memory Analyzer进行分析时,我发现随着时间的推移,对象会逐渐增加。这是我12小时后得到的:

memory usage

这种用法(64MB / 12小时)稳步增加,与工作正在进行的工作无关(即主动抽取数据或只是空转 - 以及此代码同时也用于空闲)。如果我查看MAT中的内存引用,我可以看到字符串指向代码中的这个位置,比如

tHashFile_DAAgentProductAccountCDC_delete_BPpuaT_jsonToDataPump_1_tHashOutput_2

(jsonToDataPump是joblet的名字)。我在使用这些哈希组件时做错了吗?

1 个答案:

答案 0 :(得分:0)

我相信您应该将垃圾收集器速度设置为最小持续时间,以便在应用程序中处理未使用的对象