Почему два раза подряд окно JDialog приводит к такому эффекту - PullRequest
1 голос
/ 18 октября 2011

Я исправил ошибку сегодня после почти пяти недель усилий.Происходило то, что центральный процессор на клиентском компьютере работал с частотой (от 50 до 100 процентов) после того, как я избавлялся от блока JDialog два раза подряд.

Я на самом деле избавился от него в объекте, а затем в методе, который создал объект, глупая ошибка.Мне потребовалось некоторое время, чтобы найти его, потому что вместо того, чтобы вызывать исключение нулевого указателя, я бы увидел в проводнике процессов много ошибок CSWITCH, связанных с MSVCR71.dll.

Использование профилировщика привело меня к правильному решению.
Мои вопросы:

  1. Почему я не получил исключение нулевого указателя?

  2. Какая связь была между старшим процессором и дельтами CSWITCH?

  3. Зачем пытаться расположить диалоговое окно дважды, вызывая это?

Спасибо,

Эллиот

1 Ответ

2 голосов
/ 18 октября 2011

Тяжеловесный узел Window, который является родительским для JDialog, управляется операционной системой хоста.

  1. Нет исключений нулевого указателя, потому что это в Java, а не в хост-ОС.

  2. Соединение находится в dispose(), который связывается с хост-ОС через JNI.

  3. Я подозреваю, но не могу доказать, что виноват .dll.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...