私の VB.NET プロジェクトのメモリ リークを 1 日かけて追跡した結果、その原因を FileMaker の ODBC ドライバのバグに突き止めました。
再現するには、接続できるデータベース (私は Server Advanced 11.0.3 でホストしていますが、ローカルでホストすることもできます) と、PC に登録/インストールされた ODBC ドライバー (バージョン 11.3 および 12.0 をテストしました) が必要です。 、および最新の 12.2)。
新しい VB.NET WinForms プロジェクトを開始し、フォームにボタンを追加して、このコードをボタンのクリック イベントに貼り付けます。
Using cn_FM As New Odbc.OdbcConnection("DRIVER={FileMaker ODBC};SERVER=192.168.1.xxx;UID=admin;PWD=admin;DATABASE=test;")
cn_FM.Open()
End Using
このコードは FileMaker データベースへの接続を開くだけですが、Windows タスク マネージャーでメモリ使用量を分析すると、(作成したばかりのボタンを繰り返しクリックすることで)cn_FM
ハンドルが増加し続けるために適切に破棄されていないことが簡単にわかります。ガベージコレクションを強制しようとしましたが、これは何もしなかったので、ドライバー自体に問題があると思います。
ああ、同じ方法で SQL データベースへの接続をテストしましたが、ご想像のとおり、ハンドル リークはありませんでした...
誰でもこれが正しいことを確認できますか?
編集:接続を開いたり閉じたりするさまざまな方法を試し、実際にusing
ブロック内の何かをデータベースに照会しました。また、fp7ファイルをローカルでホストしようとしましたが、まだうまくいきません:(