2012-02-22 77 views
-1

此後檢查類似控制器似乎表明控制器連接/斷開功能不存在。我們的圖形用戶界面需要檢測何時移除設備(例如,電纜拉出),通過在計時器上(每秒一次)分配DirectAndRawInputEnvironmentPlugin對象來執行此操作。可能的J輸入內存泄漏

但是,如果設備在超過9個小時內被拔出,應用程序將凍結並引發OOME。 jvisualvm的內存採樣器表明,DIDeviceObject有很多實例佔用大量內存,直到應用程序關閉時纔會釋放它。在查看DirectInputEnvironmentPlugin的構造函數後,Jinput java代碼的二進制文件被替換爲庫java源代碼以便於調試等。我注意到有一個ShutdownHook被添加爲特權操作。註釋掉ShutdownHook代碼後,內存泄漏已解決,但代碼仍然失敗(以不同的方式),因爲該庫無法創建win32設備枚舉所需的虛擬窗口。我試圖建立jinput庫來調試dll,但迄今爲止還沒有完成todo,因爲到目前爲止,Java並沒有在我的視野中,所以一切都是新的!

關於上述任何感謝的任何想法,感激不盡。

回答

0

分配一個新插件不是你應該做的事情,如果你需要檢測插入或移除的控制器,實現已經存在的接口。我之前要求志願者實施它,但突然它變得不重要。如果您希望幫助JInput並實施界面,請隨時通過javagaming.org論壇與我們聯繫。

+0

我的下一個呼叫端口就是嘗試構建dll,因此任何可能對此有幫助的信息或鏈接都將非常有用,因爲源代碼附帶的readme.txt非常一般。 – justinp 2012-02-22 14:46:50