Ich versuche zu verstehen, unter welchen Umständen ich Speicherlecks in meinen Programmen machen würde, also habe ich begonnen, darüber zu lesen, beginnend mit This Wikipedia page geschrieben in Deutsch.Speicherleck in Java (Wikipedia)
Es gibt es ein Beispiel in Java geschrieben am unteren Rand der Seite:
private static List<Integer> nummern = new ArrayList<>();
public void erzeugeSpeicherleck() {
for (int i=1; i<10000; i++)
nummern.add(i);
}
// kein weiterer lesender Zugriff auf die List nummern (German)
// no further read access to list 'nummern' (English)
Ich schrieb dies in JavaScript und alles hat gut funktioniert.
var array = [];
for(var i=1; i<10000;i++){
array.push(i);
console.log(array);
}
Kann mir jemand erklären, warum das Stück Code in Java ist eine Speicherverlust produzieren?
Sie kennen den Unterschied zwischen JavaScript und Java, nicht wahr? Sie sind grundlegend verschiedene Sprachen, die nur einen Teil des Namens teilen. Außerdem übersetzt sich die Kommentarzeile in "kein Lesezugriff mehr auf die Liste" nummern "" - es ist immer noch möglich auf die Liste zuzugreifen :) – Thomas