Çok meşgul insanların arkasını toplayan anneleri gibidir 🙂
Ortalığı dağıt dağıt biri gelsin toplasın mantalitesi. Tabi dağıtan adam için rahatlık oluyor. Aman benim işime bir küçük araba lazım diyorsun, bakıyoruz ki araba alacak kadar hem gücümüz hem yerimiz var, alıyoruz o arabayı işimiz bitirince kenarda kalsın. Sonra bakıyoruz ki bize yastık lazım diğer odadan getir, işini kullan bırak ortada kalsın. Sonra belirli zaman aralıklarında örneğin ayda bir kere anne gelir bakar ki oooo yastıklar bir tarafta, ortada kocaman bir araba var. Alır yastıkları olması gereken yere bırakır. Alır arabayı satar sana hem yer açar hem de masraftan kurtarır. Sonuç olarak sen yeni birşey alacağın zaman ortalık temizlenmiş, herşey düzeltilmiş görürsün ve tekrar kirletmek için hemen işe başlayabilirsin.
Aslında kelime anlamı bile bize o havayı veriyor, garbage collector yani çöp toplayıcı. Peki o olmasa ne yapardık? Tabiki kendi pisliğimizi kendimiz toplamak zorunda kalırdık. Yeni class mı lazım oldu? çok güzel new dedik aldık, kullandık işimiz bitti ne yapmak lazım? delete/free deyip normalde aldığımız yere bırakmamız gerekir. Bırakmazsak ne olur, fazla sürmeden yerimiz dolar. Ev ya da artık yavaş yavaş bilgisayar terimlerine dönersek hafıza (memory/ram) çöp eve döner. Sonra bir daha new deyip birşey almak istediğin zaman bir uyarı gelir; ev dolu daha ne alacaksın (out of memory).
Uzun lafın kısası, hafıza/lojistik yönetimini kendimiz yapmadığımız tek taraflı sadece doldurmakla uğraşırken, bir mekanizmanın işe girip o alınanları temizlediği yapı ya da temizleyen yapı garbage collector oluyor.
Daha önceleri de olmasına rağmen sanıyorum Java’nın popülerleştirdiği bir kavram.
Aslında bu tür soruları “ilgili bir soru sor” butonuna basarak sorsan daha güzel olabilir. Keza hem yeni bir soru sorulmuş olur hemde daha rahat tartışma ortamı kurulabilir.
Sorunun cevabına gelince:
– Process bazında garbage collector oluşacaktır. Yani 10 java uygulaması için 10 garbage collector olacak. Sistem bazında tek bir tane olmaz yani.
– Normalde en uygun zamanı kendisi belirlemek üzere çalışır. İyi veya kötü yönleri olabilir. İstersen kendin çalıştırmak üzere tetikleyebilirsin.
Çok meşgul insanların arkasını toplayan anneleri gibidir 🙂
Ortalığı dağıt dağıt biri gelsin toplasın mantalitesi. Tabi dağıtan adam için rahatlık oluyor. Aman benim işime bir küçük araba lazım diyorsun, bakıyoruz ki araba alacak kadar hem gücümüz hem yerimiz var, alıyoruz o arabayı işimiz bitirince kenarda kalsın. Sonra bakıyoruz ki bize yastık lazım diğer odadan getir, işini kullan bırak ortada kalsın. Sonra belirli zaman aralıklarında örneğin ayda bir kere anne gelir bakar ki oooo yastıklar bir tarafta, ortada kocaman bir araba var. Alır yastıkları olması gereken yere bırakır. Alır arabayı satar sana hem yer açar hem de masraftan kurtarır. Sonuç olarak sen yeni birşey alacağın zaman ortalık temizlenmiş, herşey düzeltilmiş görürsün ve tekrar kirletmek için hemen işe başlayabilirsin.
Aslında kelime anlamı bile bize o havayı veriyor, garbage collector yani çöp toplayıcı. Peki o olmasa ne yapardık? Tabiki kendi pisliğimizi kendimiz toplamak zorunda kalırdık. Yeni class mı lazım oldu? çok güzel new dedik aldık, kullandık işimiz bitti ne yapmak lazım? delete/free deyip normalde aldığımız yere bırakmamız gerekir. Bırakmazsak ne olur, fazla sürmeden yerimiz dolar. Ev ya da artık yavaş yavaş bilgisayar terimlerine dönersek hafıza (memory/ram) çöp eve döner. Sonra bir daha new deyip birşey almak istediğin zaman bir uyarı gelir; ev dolu daha ne alacaksın (out of memory).
Uzun lafın kısası, hafıza/lojistik yönetimini kendimiz yapmadığımız tek taraflı sadece doldurmakla uğraşırken, bir mekanizmanın işe girip o alınanları temizlediği yapı ya da temizleyen yapı garbage collector oluyor.
Daha önceleri de olmasına rağmen sanıyorum Java’nın popülerleştirdiği bir kavram.
çok güzel bir açıklama olmuş 🙂
Açıklamanıza göre garbage collector için bir nevi bellek temizleyici diyebiliriz sanırım.
Peki garbage collector, yazılan bir programa mı özeldir? yoksa bir sistem üzerinde tek bir garbage collector mü vardır?
yani, bir işletim sistemi üzerinde çalışan 5 tane Java uygulamamız varsa 5 ayrı garbage collector mü vardır?
burdaki temizleme işlemini Java’nın kendisi mi yapıyor? yoksa dışarıdan işletim sistemi mi duruma müdahale ediyor?
Aslında bu tür soruları “ilgili bir soru sor” butonuna basarak sorsan daha güzel olabilir. Keza hem yeni bir soru sorulmuş olur hemde daha rahat tartışma ortamı kurulabilir.
Sorunun cevabına gelince:
– Process bazında garbage collector oluşacaktır. Yani 10 java uygulaması için 10 garbage collector olacak. Sistem bazında tek bir tane olmaz yani.
– Normalde en uygun zamanı kendisi belirlemek üzere çalışır. İyi veya kötü yönleri olabilir. İstersen kendin çalıştırmak üzere tetikleyebilirsin.