可能的JInput内存泄漏

时间:2012-02-22 12:33:13

标签: java jinput

此类检查相似控制器似乎表明控制器连接/断开功能不存在。我们的GUI需要检测设备何时被移除(例如拉线)当前它通过在定时器(每秒一次)上分配DirectAndRawInputEnvironmentPlugin对象来执行此操作。

但是,如果设备被拔掉超过9小时,应用程序会冻结,并会抛出OOME。 jvisualvm的内存采样器表明DIDeviceObject有很多实例占用了大量的内存,直到应用程序关闭才会释放。 Jinput java代码的二进制文件被库java源代码替换以便于调试等,在查看DirectInputEnvironmentPlugin的构造函数后,我注意到有一个ShutdownHook被添加为特权操作。注释掉ShutdownHook代码后,内存泄漏得到了解决,但代码仍然失败(以不同的方式),因为库无法创建win32设备枚举所需的虚拟窗口。我已经尝试构建jinput库来调试dll,但是到目前为止,todo失败了,直到现在还没有我的雷达,所以一切都是新的!

任何有关上述任何内容的想法都会感激不尽。

1 个答案:

答案 0 :(得分:0)

如果您需要检测插入或移除的控制器,请执行已经存在的接口,而不应该分配新插件。我之前已经要求志愿者实施它,但突然间它变得不那么重要了。如果您希望帮助JInput并实现界面,请随时通过javagaming.org论坛与我们联系。