それはあなたがパフォーマンスと呼ぶものに依存します。全体的なパフォーマンスについて話していると仮定します。つまり、メモリ消費量や速度などがすべて重要です。
使用するリソースにも依存します。一部のリソース(ファイルハンドルなど)はプロセスの終了時に回復されるため、リークは実行時にのみ問題になります。その他(サーバー接続やデータベース接続など)は、アプリケーションの実行後もリークが続く可能性があります。その他(ミューテックスなど)は、できるだけ早くリリースする必要があります。
現在、結果はリソースによって異なります。リソースが同じプロセスのネイティブオブジェクトである場合、リソースをリークすると、関連するメモリがリークする可能性があります。リソースがロックしたがロック解除に失敗したミューテックスである場合は、アプリケーションをデッドロックしようとしている可能性があります。リソースが接続の場合、サーバーは、使用を停止した後もその接続を開いたままにします。リソースがファイルの場合、他のアプリケーション(または独自のアプリケーション)が再度アクセスするのを停止する可能性があります。
結局、一部のリソースはリークされる可能性がありますが、他のリソースはリークされるべきではありません。私に関する限り、リソースが漏洩することはありませんが、YMMVです。
したがって、そのリソースの重要性が認識されているかどうかに関係なく、取得したリソース(メモリ、ファイル、接続、ミューテックスなど)を常に正しく解放する習慣を身に付ける必要があります。そうすることで、正しいコーディングパターン(および考え方)を身に付けることができます。
RAIIと例外安全性は、概念を探求したい場合に検索するキーワードです。
C#の場合、Disposeパターン(IDisposableインターフェイスとファイナライザー)とusing
キーワードが必要になります。別の解決策は、 /のfinally
クラスを使用してリソースを解放することですが、これを正しく維持することは困難です。try
finally
Javaでは、Java 7(IIRC)が必要であり、AutoCloseableインターフェースと「try-with-resources」ステートメントを使用します。C#の場合と同様に、 /のfinally
クラスを使用してリソースを解放できますが、同じ問題があります。try
finally