Příklad
protected void finalize() throws Throwable {
ResultSet set = getResultSet();
try {
set.cancelRowUpdates();
set.clearMEDIUMs();
set.close();
}
catch (SQLException exc) {
LogUtility.log(exc);
}
finally {
if (set != null) {
try {
set.close();
}
catch (SQLException exc) {
LogUtility.log(exc);
}
}
super .finalize();
}
}

private ResultSet getResultSet() {
return _set;
}

private transient ResultSet _set;
Řešení
Použijte metody vyčištění, která se vyvolá explicitně místo metody finalize().
public void free() {
ResultSet set = getResultSet();
try {
set.cancelRowUpdates();
set.clearMEDIUMs();
set.close();
}
catch (SQLException exc) {
LogUtility.log(exc);
}
finally {
if (set != null) {
try {
set.close();
}
catch (SQLException exc) {
LogUtility.log(exc);
}
}
}
}

private ResultSet getResultSet() {
return _set;
}

private transient ResultSet _set;