Апплет заставляет Windows 7 полностью зависать - PullRequest
5 голосов
/ 04 февраля 2011

У меня есть апплет, который делает что-то, что заставляет Windows 7 полностью зависать, указатель мыши больше не отвечает, ctrl-alt-del больше не работает и т. Д.

Когда я открываю диспетчер задач, он не показывает значительной загрузки процессора или чрезмерного использования памяти.

Замораживание иногда происходит и при отладке в Eclipse, но не всегда.

Я не совсем уверен, где мне следует устанавливать точки останова, поскольку это довольно большое приложение с графическим интерфейсом.

Может ли это быть ошибкой в ​​JVM? Разве для апплета не возможно сделать что-то подобное?

Edit: чтобы ответить на мой собственный вопрос, я нашел ошибку в Eclipse, и кажется, что вызов Toolkit.getDefaultToolkit (). GetSystemClipboard (). GetContents (null) заставляет всю систему зависать, что довольно удивительно поскольку файл Excel всего 1 МБ. Возможно, буфер обмена не предназначен для подобных ситуаций.

1 Ответ

1 голос
/ 10 февраля 2011

Используйте jStack для создания дампа потока.Таким образом, вы будете знать, что делает код.Чтобы использовать его просто:

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

Вы можете получить идентификатор процесса из диспетчера задач.jStack является частью JDK (насколько я знаю, начиная с 1,5).

...