search
Giriş
Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
0 oy
587 gösterim
Selam,

Garbage collector nedir? neden kullanma ihtiyacı duyarız?
kapalı
Java kategorisinde 2.0k puan

1 cevap

1 oy
 
En İyi Cevap

Ç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. 

6.2k puan
seçti
ç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.

İlgili sorular

0 oy
1 cevap 892 gösterim
892 gösterim
Garbage collector nedir? Bütün dillerde var mıdır? Varsa nasıl, yoksa nasıl çalışılır?
9 Ocak 2018 Genel Kavramlar kategorisinde kenan 6.2k puan sordu
0 oy
1 cevap 349 gösterim
349 gösterim
Garbage collector yapısını kısaca Python'da nasıl çalıştığını açıklayabilir misiniz?
11 Ocak 2020 Python kategorisinde kenan 6.2k puan sordu
0 oy
1 cevap 1.3K gösterim
1.3K gösterim
Java'da uygulama yazarken neden double neden BigDecimal kullanmalıyız? Farkı nedir?
4 Şubat 2021 Java kategorisinde kenan 6.2k puan sordu
0 oy
1 cevap 330 gösterim
330 gösterim
Spring Boot ile bir uygulama geliştiriyorum. Haliyle birsürü entity sınıfım var. Swagger entegre ettiğim zaman bu entity sınıflarım için de endpoint açıldığını görüyorum. Ben sadece benim istediğim endpointlerin orada görünmesini istiyorum. Bunu nasıl sağlayabilirim?
1 Şubat 2021 Java kategorisinde kenan 6.2k puan sordu
0 oy
1 cevap 695 gösterim
695 gösterim
Lambda Expression ve Anonymous class arasındaki fark nedir? Lamda epression anonim bir fonksiyon diye biliyorum. Yani Anonim bir functional interface class'ı Hatta @FunctionalInterface kullanılıyor,.
30 Eylül 2020 Java kategorisinde tolgacelik.art 2.0k puan sordu