Wie funktioniert die Speicherzuordnung einer ArrayList?

Soweit ich weiß, wenn wir eineArrayList:

ArrayList<String> list = new ArrayList<String>(SIZE);

Die JVM behält sich das vorein zusammenhängender Teil des Gedächtnisses. Wenn wir neue Elemente in unsere Liste aufnehmen, wenn die Anzahl der Elemente 75% von erreichtSIZE Es reserviert einen neuen zusammenhängenden Teil des Speichers und kopiert alle Elemente.

Unsere Liste wird immer größer. Wir fügen neue Objekte hinzu und die Liste muss noch einmal neu erstellt werden.

Was passiert jetzt?

Die JVM sucht nach einem zusammenhängenden Speichersegment, findet jedoch nicht genügend Speicherplatz.

Der Garbage Collector kann versuchen, nicht verwendete Referenzen zu entfernen und den Speicher zu defragmentieren. Was passiert, wenn die JVM nach diesem Vorgang keinen Speicherplatz für eine neue Instanz der Liste reservieren kann?

Erstellt es ein neues, mit maximal möglichem Segment? WelcheException wird geworfen?

Ich habe diese Frage gelesenJava: Wie ArrayList den Speicher verwaltet und eine der Antworten ist:

Referenz belegt nicht viel Platz. Trotzdem wird ein Teil des Raums genutzt. Wenn das Array größer wird, kann dies ein Problem sein. Wir können auch nicht vergessen, dass wir andere Dinge haben, die Speicherplatz nutzen.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage