在堆转储中查找GroovyConsole脚本的String版本

时间:2011-06-21 14:48:48

标签: groovy heap-dump oql groovy-console

我不小心在GroovyConsole中运行了一个带有无限循环的脚本。 : - \

为了墨菲定律,我在3或4个小时内没有保存我的工作。因此,在杀死GroovyConsole进程之前,我已经转储了堆,希望找到此时正在运行的Script的String版本

您是否有提示可以隐藏哪个类,或者是否可以隐藏?

1 个答案:

答案 0 :(得分:2)

所以,我的猜测是正确的。 groovy.ui.Console对象保留脚本更改的历史记录。我给你的OQL查询给了我最好的乐趣。我使用OQL插件在VisualVM中运行它,但我可以使用jhat:

select x.history.elementData[x.history.elementData.length-2].allText.toString() from groovy.ui.Console x

一旦失去代码的绝望的常规开发者现在可能会被释放:-)我确定

脚本的字符串版本可能存在于另一个对象中。我很乐意听到其他解决方案