このようなチェックのための類似のコントローラは、コントローラの接続/切断機能が存在しないように見えます。私たちのGUIは、デバイスが取り除かれる(例えば、ケーブルが引っ張られる)ときに、現在DirectAndRawInputEnvironmentPluginオブジェクトをタイマー(1秒に1回)に割り当てることによってこれを検出するという要件があります。可能なJInputメモリリーク
ただし、デバイスを9時間以上接続しないと、アプリがフリーズし、OOMEがスローされます。 jvisualvmのメモリサンプラーは、DIDeviceObjectが、アプリケーションが終了するまで解放されない大きなチャンクを占めるインスタンスがかなりあることを示しました。 JinputのJavaコードのバイナリは、DirectInputEnvironmentPluginのコンストラクタを確認した後、デバッグなどを容易にするために、ライブラリのjavaソースコードに置き換えられました。私は、特権動作としてShutdownHookが追加されていることに気付きました。 ShutdownHookコードをコメントアウトした後、メモリリークは解決されましたが、ライブラリはwin32デバイスの列挙に必要なダミーウィンドウを作成できないため、コードは(別の方法で)失敗します。私はDLLをデバッグするためにjinputライブラリを構築しようとしましたが、今まで私のレーダーにはなかったので、Javaはこれまでのところtodoに失敗しました。
上記のいずれかに関するアイデアは感謝して受け取りました。
私の次のコールポートは、DLLを構築しようとすることでした。そのため、ソースコードに付属するreadme.txtは非常に一般的なので、これを助ける情報やリンクは大きな助けになります。 – justinp