一个小程序让 Windows 7 完全冻结

发布于 2024-10-15 14:44:33 字数 411 浏览 2 评论 0原文

我有一个小程序,它会执行一些操作,使 Windows 7 完全冻结,鼠标指针不再响应,ctrl-alt-del 不再起作用等。

当我打开任务管理器时,它没有显示任何明显的 CPU 负载或过度使用内存。

在 Eclipse 上调试时有时也会发生冻结,但并非总是如此。

我不太确定应该在哪里设置断点,因为它是一个相当大的 GUI 应用程序。

这可能是 JVM 中的一个错误吗?小程序不是不可能做这样的事情吗?

编辑:为了回答我自己的问题,我在 Eclipse 中发现了错误,似乎对 Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null) 的调用使整个系统冻结,这是非常令人惊讶的,因为 Excel文件只有 1 MB。也许剪贴板并不是真正为这种情况设计的。

I've got an applet which does something which gets Windows 7 to freeze completely, the mouse pointer no longer responds, ctrl-alt-del no longer works etc.

When I open the task manager, it doesn't show any significant CPU load or excessive usage of memory.

The freeze sometimes happens when debugging on Eclipse as well, but not always.

I'm not quite sure where I should set breakpoints yet since it's a pretty big GUI application.

Could this be a bug in the JVM? Isn't it supposed to be impossible for an applet to do something like this?

Edit: To answer my own question, I found the bug in Eclipse, and it seems that the call to Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null) gets the whole system to freeze, which is pretty surprising since the Excel file is only 1 MB. Maybe the clipboard isn't really designed for situations like this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

柠檬色的秋千 2024-10-22 14:44:33

使用jStack生成线程转储。这样你就会知道代码在做什么。使用方法如下:

C:\your_java_bin_folder> jstack -l <process-id>

您可以从任务管理器获取进程 ID。 jStack 是 jdk 的一部分(据我所知,从 1.5 开始)。

Use jStack to generate a Thread Dump. That way you will know what the code is doing. To use it just:

C:\your_java_bin_folder> jstack -l <process-id>

You can get the process id from the Task Manager. jStack is part of the jdk (as far as I know since 1.5).

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