Javaでは、GCによってメモリリソースが自動的に解放されますが、メモリリソースだけでなく、データベース接続、ネットワーク接続、ファイルハンドルなどの非メモリリソースもあります。したがって、これも解放する必要があります(ガベージコレクションだけでなく) )それが終わったら。
だから、私の質問は、Javaで非メモリリソースを処理(解放)しない場合に直面する可能性のある問題は何ですか?
これについての明確な考えから抜け出すために私を導いてください...
Javaでは、GCによってメモリリソースが自動的に解放されますが、メモリリソースだけでなく、データベース接続、ネットワーク接続、ファイルハンドルなどの非メモリリソースもあります。したがって、これも解放する必要があります(ガベージコレクションだけでなく) )それが終わったら。
だから、私の質問は、Javaで非メモリリソースを処理(解放)しない場合に直面する可能性のある問題は何ですか?
これについての明確な考えから抜け出すために私を導いてください...
例はそれです。FileInputStream のようないくつかの API を使用する場合。これは、呼び出すときにメモ以外のリソースの 1 つです。ファイルから何かを読み終えて、ファイルを閉じるのを忘れると、システムがこのファイルを占有して、プログラムが終了します。占領期間中は、このファイルを開くことはできません。それが問題です。
あなたは物事を複雑にしています。Java でプログラムを設計する場合、このようなメモリ以外のリソースの管理は、できるだけ OS や他のアプリケーションに任せるべきです。つまり、ファイルハンドラーや DB 接続を考慮せずに JVM をシャットダウンできます。OS はファイル ハンドラをリサイクルし、DB は非アクティブな接続をリサイクルし、appserver はネットワーク接続をリサイクルします......信じてください、OS、データベース、および人気のあるネットワーク アプリは、あなたが思っているよりもスマートです。