Java'da fonksiyon içinde yarattığımız nesneler bellekte tutuluyor. Fonksiyon sonlandıktan sonra fonksiyon içindeki nesneler ne zaman bellekten silinir?
Örnek olarak aşağıda yazılı fonksiyondaki kritik şifre bilgisini fonksiyon sonlandıktan sonra bellekten okunmaması için ne gibi bir önlem alınmalıdır.
public String askForPin(){
char[] pin = jPasswordFieldPIN.getPassword();
if (pn == null || pn.length < 1) return null;
String spin = new String(pn);
return spin;
}
Aşağıdaki gibi bir iyileştirme yapıldığında bellek üzerinde tutulan kritik bilgi silinmiş oluyor mu? Hayır ise ne gibi bir yöntem izlenmelidir.
public String askForPin(){
char[] pn = null;
String spn = null;
try {
pn = jPasswordFieldPIN.getPassword();
if (pn == null || pn.length < 1) return null;
spn = new String(pn);
return spn;
} catch (Exception e) {
return null;
} finally {
pn = null;
spn = null;
}
}