Jas*_*ltz 1 java memory-leaks memory-management jdbc resultset
以下代码是否会导致内存泄漏?使用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);
}
Run Code Online (Sandbox Code Playgroud)
假设rsPartRes是此代码中的ResultSet,可能包含100多条记录.基本上,他担心的是因为我们循环遍历这个结果集并且没有使用StringBuffer(在这种情况下,我甚至不确定你将如何使用它),它可能导致内存泄漏.是否有人在这里看到这可能导致内存泄漏或性能问题......?
据我所知,没有必要在StringBuffer这里使用.
使用a StringBuffer来提高性能的唯一原因是当你String一遍又一遍地连接时.
String result = "";
while (condition) {
result += somethingElse;
}
Run Code Online (Sandbox Code Playgroud)
或(这些日子StringBuilder更好的替代品StringBuffer)
StringBuilder result = new StringBuilder();
while (condition) {
result.append(somethingElse);
}
Run Code Online (Sandbox Code Playgroud)
第二段代码表现得更好.