-1

This post checks-for-similar-controllers 似乎表明控制器连接/断开功能不存在。我们的 GUI 需要检测设备何时被移除(例如电缆拉动),当前它通过在计时器上(每秒一次)分配 DirectAndRawInputEnvironmentPlugin 对象来执行此操作。

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

任何关于上述任何内容的想法都非常感谢。

4

1 回答 1

0

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

于 2012-02-22T13:59:29.537 回答