Чӣ гуна намудҳои истинодҳои гуногун дар забони Java фарқ мекунанд ва онҳо чӣ гуна ба ҷамъоварии партовҳо таъсир мерасонанд?
sobes.tech AI
Ҷавоб аз AI
Дар Java мавҷуданд намудҳои гуногуни истинодҳо, ки ба рафтори ҷамъкунандаи партов (Garbage Collector) таъсир мерасонанд:
-
Ихтиёрии Маъзур (Strong Reference) — истинод ба объект. То вақте ки истинодҳои қавӣ вуҷуд доранд, объект аз ҷониби ҷамъкунандаи партов нест мешавад.
-
Ихтиёрии нарм (Soft Reference) — объект бо истиноде нарм танҳо дар ҳолати камбуди хотира нест мешавад. Барои кэш истифода мешавад.
-
Ихтиёрии суст (Weak Reference) — объект бо истиноде суст метавонад дар давоми гузариши ояндаи ҷамъкунандаи партов нест шавад, ҳатто агар истинодҳои суст вуҷуд дошта бошанд.
-
Ихтиёрии фантазм (Phantom Reference) — барои пайгирии лаҳзаи омода будани объект барои нест кардан, аммо ҳанӯз нест карда нашудааст. Имкон медиҳад, ки баъд аз нест кардани объект амалҳои иловагӣ иҷро шаванд.
Масалан истифодаи истиноде суст:
import java.lang.ref.WeakReference;
public class WeakRefExample {
public static void main(String[] args) {
Object obj = new Object();
WeakReference<Object> weakRef = new WeakReference<>(obj);
obj = null; // Нест кардани истиноде қавӣ
System.gc(); // Рондани ҷамъкунандаи партов
if (weakRef.get() == null) {
System.out.println("Объект нест шуд");
} else {
System.out.println("Объект ҳоло дастрас аст");
}
}
}
Тавре ки мебинем, интихоби навъи истинод имкон медиҳад, ки вақти зиндагии объектҳо ва самаранокии истифодаи хотира назорат карда шавад.