一个小程序让 Windows 7 完全冻结
我有一个小程序,它会执行一些操作,使 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
jStack
生成线程转储。这样你就会知道代码在做什么。使用方法如下:您可以从任务管理器获取进程 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:You can get the process id from the Task Manager.
jStack
is part of the jdk (as far as I know since 1.5).