Sobes.tech
Junior — Middle

Tudná magyarázni a sztring pool fogalmát és szerepét a Java memória kezelésében?

sobes.tech MI

Válasz az MI-től

A Java String Pool egy speciális memóriahely, ahol az egyedi string literál példányokat tárolják. Ez memória megtakarítást és gyorsabb string összehasonlítást tesz lehetővé.

Amikor egy stringet literálként hozol létre, például:

String s = "szia";

Java ezt a stringet a string pool-ba helyezi. Ha később egy másik stringet hozol létre ugyanazzal az értékkel, az a már létező objektumra fog hivatkozni a pool-ban, nem pedig újat hoz létre.

Ez fontos a memória kezelésében, mivel a stringek gyakran használt objektumok, és az ismételt példányok újrafelhasználása csökkenti a szemétgyűjtő terhelését és a memóriahasználatot.

Ha egy stringet a new String("szia") konstruktorral hozol létre, az a heap-en jön létre, nem a pool-ban, és nem lesz automatikusan újrahasznosítva.

A string pool-ba való hozzáadáshoz hívhatod az intern() metódust:

String s1 = new String("szia");
String s2 = s1.intern(); // s2 a pool-ban lévő stringre fog hivatkozni