2016-11-25 12 views
3

私は簡単な質問があります。 PreparedStatementとResultSetが原因であると思うので、私は自分のコードにいくつかのメモリリークがあります。なぜなら、リソースとそのメモリを解放する最も安全で正しい方法が何であるかを知りたいからです。PreparedStatement.close()とPreparedStatement = null;

PreparedStatement.close()またはPreparedStatement = null

ResultSet.close()またはResultSet = null

ありがとう

+0

PreparedStatement.close()はより良い – AJS

+0

これらは問題であるとどのような証拠がありますか? – EJP

答えて

5

すべての使用可能なクローズ可能オブジェクトに対してclose()メソッドを呼び出します。参照をクリアするだけでは不十分です。

参照をクリアするだけで、StatementオブジェクトとResultSetオブジェクトはConnectionが閉じられている場合にのみ閉じられ、ConnectionPoolなどが使用されている場合は閉じられません。

EDIT:接続を閉じると、この接続によって作成されたすべてのStatementとResultSetsが閉じられます。ステートメントを閉じると、このステートメントによって作成されたすべてのResultSetsがクローズされます。

+0

リソースを閉じるとすぐにメモリがクリアされますか? –

+0

あなたの編集の要約 –

+0

@ShivkumarMallesappa GCの仕組みを知っていますか? –