Ich bin gespannt, wie die neuesten JVMs mit Garbage-Collection-Speicher umgehen, der mit der folgenden Methode reserviert wurde.
%Vor% Im schlimmsten Fall kann ich mir vorstellen, dass die JVM den gesamten Inhalt von listToSort
im Speicher behält, solange Referenzen auf die Unterliste verbleiben. Weiß jemand, ob das tatsächlich der Fall ist? Ich bin besonders an Links interessiert, die dies auf die eine oder andere Weise für bestimmte JVMs beweisen können.
Ja, subList
ist nur eine "Ansicht" auf die bestehende Liste. Alle Daten sind wirklich in der ursprünglichen Liste. Aus der Dokumentation:
Die zurückgegebene Liste wird von dieser Liste unterstützt, sodass nicht strukturelle Änderungen in der zurückgegebenen Liste in dieser Liste widergespiegelt werden und umgekehrt.
Wenn Sie also eine Unterliste zurückgeben, wird die ursprüngliche Liste nicht als Garbage Collected behandelt.
Wenn Sie diesen Effekt nicht möchten, müssen Sie grundsätzlich eine Kopie der relevanten Unterliste erstellen. Zum Beispiel:
%Vor%Ich denke, du hast Recht. Da die Unterliste von der ursprünglichen Liste unterstützt wird. Aus den Java-Dokumenten:
Gibt eine Ansicht des Teils davon zurück Liste zwischen dem angegebenen fromIndex, inklusive und toIndex, exklusiv. (Ob fromIndex und toIndex sind gleich, die Die zurückgegebene Liste ist leer.) Die zurückgegebene Liste wird durch diese Liste unterstützt nicht-strukturelle Veränderungen in der zurückgegebenen Liste sind in dieser Liste enthalten, und und umgekehrt. Die zurückgegebene Liste wird unterstützt alle optionalen Listenoperationen unterstützt von dieser Liste.
Tags und Links java garbage-collection