Sobes.tech
Junior — Middle

Na kom mestu u memoriji Java skladišta se nalaze objekti nizova?

sobes.tech АИ

Одговор од АИ

U Javi, objekti niza (String) se čuvaju u posebnoj oblasti memorije nazvanoj String Pool (bazen nizova), koja se nalazi u Metaspace ili u PermGen (u starijim verzijama JVM-a).

Kada se kreira literal niza, JVM proverava bazen nizova: ako takav niz već postoji, vraća referencu na postojeći objekat; u suprotnom, kreira novi objekat i smešta ga u bazen. Ovo pomaže u uštedi memorije i ubrzava poređenje nizova.

Ako se niz kreira pomoću konstruktora new String(), objekat se kreira na hrpi (heap) i neće automatski biti smešten u String Pool, osim ako eksplicitno ne pozovete metodu intern().

Primer:

String s1 = "hello"; // niz u bazenu
String s2 = new String("hello"); // objekat na hrpi
String s3 = s2.intern(); // s3 referencira niz iz bazena