1

複数のステートメント変数を使用するJavaアプリケーションがあります。複数のステートメントが必要な理由の問題は、ループ内の1つの結果に対してループを実行しているときに、他のクエリ操作を実行する必要があることです。単一のstmtが何度も使用される場所のほとんどは、最終的に閉じます。ここで確認したいのは、結果セット変数を閉じておらず、メモリの使用量が変動していることに気付いたということです。結果を取得した直後、またはstmtが終了する直前に結果セットを閉じるための最良のメカニズムは何ですか。閉まっている?

4

2 に答える 2

4

JDBC 仕様とStatement.close()API docによると、それで十分なはずです。

注: Statement オブジェクトが閉じられると、現在の ResultSet オブジェクトが存在する場合は、それも閉じられます。

それに基づいて、ステートメントを閉じるだけでよいと想定できるはずです。ただし、Statement は、そこから取得した単一の ResultSet を使用するよりも長い有効期間を持つことができるため、一般に、できるだけ早く ResultSet を閉じることをお勧めします。

たとえば、ステートメントを再度使用して別のクエリを実行したり、PreparedStatement の場合は別のパラメーターを使用してクエリを再度実行したりするため、Statement の有効期間が長くなる可能性があります。別のクエリを実行した場合、以前に取得した ResultSet は閉じられます。

于 2012-07-05T18:24:58.450 に答える
1

終了したら、他のリソースと同じように閉じます。Mo は、特にメモリの測定に失敗している場合は、それをより長く保持することを指摘しています。これは、メモリの懸念を意味します。

于 2012-07-05T18:17:47.047 に答える