Устранение неполадок с утечкой памяти в JInput: Windows не уничтожается должным образомJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Устранение неполадок с утечкой памяти в JInput: Windows не уничтожается должным образом

Сообщение Гость »

Фон
Я работаю над реализацией горячей замены контроллера в JInput и столкнулся с утечкой памяти. Я добился некоторого прогресса на стороне Java, что описано в этом PR, но, похоже, на стороне C существует давняя проблема, особенно касающаяся создания и уничтожения окон.

Полную информацию о проблеме можно найти здесь.
Описание проблемы
В библиотеке JInput ввод с помощью джойстика в Windows включает создание и удаление окон. Этот процесс обрабатывается собственным кодом C, который можно найти здесь. Проблема возникает, когда я пытаюсь уничтожить эти окна с помощью DestroyWindow. Даже после вызова этой функции скрытые окна продолжают появляться в таких инструментах, как WinLister и Spy++, и накапливаются в памяти, вызывая утечку ресурсов.
Что я пробовал [*]Я попытался обработать все оставшиеся сообщения для окон, прежде чем уничтожить их. [*]Я позаботился о том, чтобы создание и уничтожение выполнялись в одном потоке. [*]Я проверил возвращаемое значение DestroyWindow и убедился, что он не сообщает об ошибках, вызвав GetLastError.
Интересное наблюдение: когда я пытаюсь снова вызвать DestroyWindow с тем же дескриптором, он возвращает код ошибки 1400, указывающий на недопустимый дескриптор.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»