1
4

1 に答える 1

1

WinSCP .NET アセンブリSessionクラスには、Disposeメソッドがあります。おそらくC++/CLIによって隠されていますが。Disposeを使用して間接的に呼び出しますdelete。マネージ C++でIDisposable を破棄する方法とC# オブジェクトでの C++/CLI 削除の呼び出しを参照してください。

通常、そうしない場合でも、古いセッションへの参照を保持しないため、ガベージ コレクターが (予測できない瞬間に) 代わりにこれを行います。しかし、マシンがメモリ不足になることは絶対にありません。

一方、Dispose(the delete) を呼び出して未使用のセッションを閉じる必要があります。そうしないと、サーバーへの許可された接続が不足する可能性があります (またはサーバーのリソースを使い果たすことさえあります)。

セッションがいつ破棄されるかを確認するには、 を設定し、Session.DebugLogPath次のようなエントリのログを検索します。

[2014-04-23 08:08:50.756Z] [000a] Session.Dispose entering

プログラムが終了したときにメモリリークの可能性があるかどうかというあなたの質問は無関係です。プロセスによって割り当てられたメモリは、プロセスの終了時にオペレーティング システムによって解放されます。プログラム自体にどんなリーク/バグ/何かがあっても。プログラムの終了時にヒープは解放されますか?も参照してください。とにかく、あなたのコードはメモリをリークしないと思います。

于 2014-04-23T06:11:01.063 に答える