我有一个小程序,它做了一些事情,使Windows7完全冻结,鼠标指针不再响应,ctrl-alt-del不再工作等。
当我打开任务管理器时,它没有显示任何明显的CPU负载或过度使用内存。
在Eclipse上调试时,有时也会发生冻结,但并不总是如此。
我还不确定应该在哪里设置断点,因为它是一个非常大的GUI应用程序。
这会不会是JVM中的一个bug?小程序不是应该不可能做这样的事情吗?
编辑:为了回答我自己的问题,我在Eclipse中发现了错误,似乎对Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null)的调用会使整个系统冻结,这非常令人惊讶,因为Excel文件只有1MB。也许剪贴板并不是为这种情况而设计的。
发布于 2011-02-11 04:51:35
使用jStack生成线程转储。这样你就会知道代码在做什么。使用它只需:
C:\your_java_bin_folder> jstack -l <process-id>您可以从任务管理器中获取进程id。jStack是jdk的一部分(据我所知,从1.5开始)。
https://stackoverflow.com/questions/4897663
复制相似问题