在堆转储中查找 GroovyConsole 脚本的字符串版本

发布于 2024-11-16 11:46:04 字数 165 浏览 6 评论 0原文

我不小心在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

强者自强 2024-11-23 11:46:04

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

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

曾经丢失代码的绝望的 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 :

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文