次のコードでメモリ リークが発生する可能性はありますか? StringBuffer を使用すると、実際にメモリ使用量が改善されますか?
ちょっとした背景: ある同僚がメモリ リークに関する彼の理論を推し進めており、これは彼が (プロファイリングを一切行わずに) 問題のあるコードであると特定したコードであり、メモリ リークを引き起こす可能性があると彼は主張しています。私はこれに同意しないので、他の開発者に第三者の意見を求めようと思いました。
List partCollection = new ArrayList()
String partKeyID = null;
String sPartNbr = null;
String partDescription = null;
while(rsPartRes.next())
{
partKeyID = rsPartRes.getString("PART_KEY_ID");
sPartNbr = rsPartRes.getString("PART_NBR");
partDescription = rsPartRes.getString("PART_DESC");
SomeValueObject someValueObject = new SomeValueObject();
someValueObject.setPartKeyID(partKeyID);
someValueObject.setSPartNbr(sPartNbr);
someValueObject.setPartDescription(partDescription);
partCollection.add(someValueObject);
}
このコードでは、rsPartRes が ResultSet であり、100 以上のレコードを含むことができると想定します。基本的に、彼の懸念は、この結果セットをループしており、StringBuffer を使用していないため (この場合、どのように使用するかさえわかりません)、メモリ リークが発生する可能性があることです。これがメモリ リークやパフォーマンスの問題を引き起こす可能性があると思われるケースはありますか?