"Merhaba, Amigo!"
"Hey Ellie. Bana söyleyeceğin ilginç bir şey var mı?"
"Bugün bir nesnenin bellekte ne kadar kaldığından bahsedeceğiz, bu aynı zamanda nesnenin ömrü olarak da bilinir. Bir nesne oluşturulduktan sonra, en az bir değişken adresini sakladığı sürece var olur (yaşar). başka referans yoksa nesne ölür. İşte bazı örnekler:"
public class MainClass
{
public static void main (String[] args)
{
┏ Tommy
┃ Cat cat = new Cat("Tommy");
┃ cat = null;
┗
┏ Sammy
┃ Cat cat1 = new Cat("Sammy");
┃┏ Missy
┃┃Cat cat2 = new Cat("Missy");
┃┃cat2 = cat1;
┃┗
┃┏ Ginger
┃┃cat1 = new Cat("Ginger");
┃┃cat2 = null;
┃┗
┗
}
}
"Tommy nesnesi, yaratıldığı andan itibaren yalnızca bir satır boyunca var olur. Nesneye başvuran tek değişken, hemen sonraki satırda null değerine ayarlanır, bu nedenle nesne, Java Sanal Makinesi (JVM) tarafından yok edilir."
"Sammy nesnesi , oluşturulduktan sonra cat1 değişkeninde depolanır . Veya daha doğrusu, değişken ona bir referans depolar. Birkaç satır sonra, bu referans cat2'ye kopyalanır . Daha sonra başka bir nesneye yapılan referans şuraya kaydedilir: cat1 . Şimdi, yalnızca cat2 Sammy'ye başvuruyor . Son olarak, ana yöntemin son satırında nesneye kalan son başvuru null olarak ayarlandı."
"Missy nesnesi, oluşturulduktan sonra yalnızca bir satır için var olur. Bir sonraki satırda, cat2 değişkeni başka bir değere ayarlanır ve Missy'ye yapılan başvuru kaybolur. Nesneye artık erişilemez, bu nedenle çöp olarak kabul edilir. sistem (yani nesne öldü)."
"Ginger nesnesi bir kez oluşturulduktan sonra, yöntem sona erene kadar var olur. Yöntemin sonunda, cat2 değişkeni yok edilir, ardından Ginger hemen yok edilir."
"Anlıyorum."
"Ancak, bir yöntemin içinde bir Cat nesnesi oluşturur ve buna bir örnek değişkende bir referans depolarsak, Cat nesnesi, hala canlı olan başka bir nesne tarafından başvurulduğu sürece var olacaktır."
"Aslında, bir nesne genellikle sistem tarafından hemen yok edilmez. Java Sanal Makinesi, silinmek üzere işaretlenmiş nesneleri yok ederek zaman zaman 'çöp toplama' gerçekleştirir. Bu işlemle ilgili daha sonra bilgi alacağız."
"Ve artık bir değişkenin bir nesneye referans vermesini istemiyorsak , onu null olarak ayarlayabilir veya ona başka bir nesneye referans atayabiliriz."
GO TO FULL VERSION