目录
背景
项目中使用Kettle作为ETL工具,在运行某个Job时出现了StackOverflowError。报错信息如下:
分析
通过分析Kettle中的Job逻辑,发现需要执行约300次循环,而在循环到190次时就出现了StackOverflowError异常。也就是说,在循环还没有结束的时候,线程栈就不够用了。
原因
官方解释
在java.lang.StackOverflowError有如下注释信息:Thrown when a stack overflow occurs because an application recurses too deeply.
即当递归调用太深的时候,就会抛出StackOverflowError错误。