Возможная утечка памяти JInput - PullRequest
0 голосов
/ 22 февраля 2012

Эта пост-проверка для похожих контроллеров, по-видимому, указывает на то, что функции подключения / отключения контроллера не существует.В нашем графическом интерфейсе есть требование определять, когда устройство удаляется (например, при извлечении кабеля), в настоящее время оно делает это, выделяя объект DirectAndRawInputEnvironmentPlugin - по таймеру (раз в секунду).

Однако, если устройство не подключено к сети более чем на девять часов, приложение зависает и выдается OOME.Сэмплер памяти jvisualvm показал, что DIDeviceObject имел довольно много экземпляров, занимающих большой кусок памяти, который не освобождается, пока приложение не закроется.Двоичные файлы для Java-кода Jinput были заменены исходным кодом библиотеки Java для облегчения отладки и т. Д. После просмотра конструктора для DirectInputEnvironmentPlugin я заметил, что в качестве привилегированного действия был добавлен ShutdownHook.После комментирования кода ShutdownHook утечка памяти была устранена, но код все равно не работает (иным образом), поскольку библиотеке не удается создать фиктивное окно, необходимое для перечисления устройств win32.Я пытался создать библиотеку jinput для отладки dll, но до сих пор не смог сделать это, Java пока не была на моем радаре, так что все новое! *

Любые идеи, касающиеся любого из вышеперечисленного, с благодарностьюполучил.

1 Ответ

0 голосов
/ 22 февраля 2012

Выделение нового плагина - это не то, что вы должны делать, если вам нужно обнаружить, что контроллеры подключены или удалены, внедрите интерфейс, который уже существует. Я попросил добровольцев, прежде чем это осуществить, но вдруг это становится более низким приоритетом. Если вы хотите помочь JInput и реализовать интерфейс, свяжитесь с нами на форумах javagaming.org.

...