在堆转储中查找 GroovyConsole 脚本的字符串版本
我不小心在 GroovyConsole 中运行了一个带有无限循环的脚本。 :-\
由于墨菲定律,我在三四个小时内没有保存我的工作。因此,在杀死 GroovyConsole 进程之前,我已经转储了堆,希望找到此时正在运行的脚本的字符串版本,
您是否有提示它可以隐藏哪个类,或者是否可能?
I've accidentally ran a script with an infinite loop in GroovyConsole. :-\
For the sake of Murphy's Law, I haven't save my work during 3 or 4 hours. So, before killing the GroovyConsole Process, I've dumped the heap, with the hope to find a String version of the Script that was running at this moment
Do you have a hint in which Class it can hide, or if it is possible ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
所以,碰巧我的猜测是对的。 groovy.ui.Console 对象保留脚本更改的历史记录。我给你 OQL 查询,它给了我我的脚本,这是我最大的乐趣。我使用 OQL 插件在 VisualVM 中运行它,但我本可以使用 jhat :
曾经丢失代码的绝望的 groovy 开发人员现在可能会被解雇:-) 可以肯定的是,
脚本的字符串版本可能存在于另一个对象中。我很想听听其他解决方案
So, it happens that my guess was right. The
groovy.ui.Console
Object keeps an history of changes of the script. I give you the OQL query that gave me my script back for my greatest pleasure. I ran it in VisualVM with the OQL plugin, but I could have used jhat :Despaired groovy developers who've lost their code once might be releaved now :-) For sure I am
The string version of the script may exists in another object. I'd love to hear other solutions