我在Talend joblet中有一个半慢速的内存泄漏。我在一个joblet中间使用了一个tHashOutput / tHashInput对,因为我需要找出流中有多少行。因此,我将它们推入tHashOutput,然后从globalMap引用tHashOutput_1_NB_LINE。
我认为我认为是正确的选择:
然而,当我运行一段时间并使用Eclipse Memory Analyzer进行分析时,我发现随着时间的推移,对象会逐渐增加。这是我12小时后得到的:
这种用法(64MB / 12小时)稳步增加,与工作正在进行的工作无关(即主动抽取数据或只是空转 - 以及此代码同时也用于空闲)。如果我查看MAT中的内存引用,我可以看到字符串指向代码中的这个位置,比如
tHashFile_DAAgentProductAccountCDC_delete_BPpuaT_jsonToDataPump_1_tHashOutput_2
(jsonToDataPump是joblet的名字)。我在使用这些哈希组件时做错了吗?
答案 0 :(得分:0)
我相信您应该将垃圾收集器速度设置为最小持续时间,以便在应用程序中处理未使用的对象