GARBAGE COLLECTOR (  ÇÖP TOPLAYICI ).

Slides:



Advertisements
Benzer bir sunumlar
Java Hakkında Java Nedir? Java’nın Tarihi Java’nın Avantajları
Advertisements

Yazılım Geliştirme ve Java
Java-Veri Tipleri- Operatorler
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar)
Zeynep Çelik Sunar….
METODLAR Program yazarken bazı durumlarda bir işi gerçekleştiren kod yapılarını tekrar tekrar yazmak durumunda kaldığımız olur. Bu kodları yeniden yazmak.
Excel’de VBA programlama (Visual Basic Application) Ders I
Öğr.Gör. Dr. Şirin KARADENİZ
Bellek Yönetimi Process H 2 KB
İSİM UZAYLARI (Name Space)
Çerez(Cookie) Kullanımı Oturum Yönetimi
Nesneye Yönelik Programlama
NESNEYE YÖNELİK PROGRAMLAMA
JavaScript Javascript , Netscape firması tarafından C dilinden esinlenilerek yazılmıştır Yazılma amacı Html'in sahip olmadığı bazı özelliklerin web sayfalarında.
BİLGİ TEKNOLOJİSİNİN TEMEL KAVRAMLARI
Değişkenler veri tipleri operatörler
Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar
Nesneye Dayalı Programlama
PROGRAM GELİŞTİRME 1.HAFTA.
İSİM UZAYLARI (NAMESPACE)
Register ve Türleri Nihal GÜNGÖR.
NESNEYE DAYALI PROGRAMLAMA
Chapter 7: Using Methods. Metotları ve Kodlamayı Gizlemeyi Anlama Metot – Kapsüllenmiş ifadeler serisini gerçekleştiren bir görev – Kullanılan metodun.
Önceki Dersi Hatırlama !!
NESNEYE YÖNELİK PROGRAMLAMA
JAVA’DA DİZİLER Dr.Galip AYDIN.
Chapter 1: A First Program Using C#
UBUNTU LINUX KURULUMU Ders-2
 Klasör; bir programa yada herhangi bir uygulamaya ait dosyaların başka dosyalarla karışmaması için oluşturulan birimlerdir.  Klasörler sayesinde aradığımız.
Bil 102 Bölüm 6 Diziler.
 this anahtar sözcüğü, içinde bulunulan nesneye ait bir referans döndürür; bunun sayesinde nesnelere ait global alanlara erişme fırsatı bulunur. Şöyle.
Ram’ı temsil eder. Bu veri tiplerine StackPointer yoluyla ula ş ıldı ğ ı için verinin ba ş langıç adresi, biti ş adresi ve kapladı ğ ı alan bilinmelidir.
Görsel C# ile Windows Programlama
İşletim Sistemleri Operation Systems Fon müziği.
Programlama Dilleri Visual Basic C# C++ Pascal Delphi.
Ders 1 : Nedir Bu Java ?.
VERİ YAPILARI İşaretçi Nedir? Nesne Tabanlı Programlama.
Java Programlama ve NESNEYE DAYALI PROGRAMLAMA
SİMPLEKS METOT Müh. Ekonomisi.
Bilgisayar Programlamaya Giriş - 1
10. NESNEYE YÖNELİK PROGRAMLAMA Öğr.Gör. Murat ASLANYÜREK.
JAVA 1. GİRİŞ & TARİHÇE Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmıştır. Açık kodlu. Nesneye yönelik. Düzlemden.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
Asp.Net Veritabanı İşlemleri
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
C Programlama Dili Bilgisayar Mühendisliği.
UBUNTU LINUX KURULUMU Ders-2
BİLGİ SAYAR.
Fonksiyonlar Fonksiyonlar, belirli işlemleri yürüten ve sonuçları döndüren bir işlem kümesidir. Genellikle bilgisayar dilinde oluşturulur. Fonksiyonlar,
Fonksiyonlar Fonksiyonlar, belirli işlemleri yürüten ve sonuçları döndüren bir işlem kümesidir. Genellikle bilgisayar dilinde oluşturulur. Fonksiyonlar,
VISUAL STUDIO İÇERİSİNDE VERİ TABANI BAĞLANTISI ACCESS DATA SOURCE SAVAŞ TUNÇER
Bir İşletim Sisteminin Mantıksal Yapısı
PINAR KARTALO Ğ LU.  Belirli sayıda i ş lemlerin tekrarlanması için kullanılan döngülerdir. for döngüleri ba ş langıç ve biti ş de ğ erleri arasında.
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Problem Çözme Süreci-2.
Bilgisayar Mühendisliğine Giriş
Öğr.Gör. Dr. Şirin KARADENİZ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Nesneye Dayalı Programlama 1
Nesneye Dayalı Programlama 1
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Nesneler.
ÇOK BİÇİMLİLİK(POLYMORPHİSM)
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
NİŞANTAŞI ÜNİVERSİTESİ
Transaction.
Sunum transkripti:

GARBAGE COLLECTOR (  ÇÖP TOPLAYICI )

Çöp Toplayıcı Nedir? Programda bazı nesnelerin kullanımı bittiğinde bellekten silinmeleri gerekir, nesneye yönelik programlama dillerinde bu işlem otomatik olarak gerçekleşir. Yani programcının müdahalesi gerekmeden hafıza yönetimi gerçekleşir. İşte bunu gerçekleştiren yapı ise çöp toplayıcıdır.

Java Programlama Dilinde Çöp Toplayıcı Java belirli aralıklarla programı kontrol edip , işi bitmiş ve işaretlenmemiş nesneleri siler. Bu şekilde biriken nesneler programda OutOfMemoryException hatası verir. Eğer bir nesne new anahtar kelimesi ile oluşturup belleğe yerleşmek ister ve bellekte de yer kalmamış olursa; çöp toplayıcı hemen bellekteki gereksiz nesneleri silerek yer ayırır. Nesneler, belleğin heap alanında toplandığı için çöp toplayıcı bu alanda işlem yapar.

Devam Çöp toplama isteğini JVM ( Java Virtual Machine ) gönderir. Kullanılmayan nesneleri temizleyerek o alanı belleğe tekrar iade eden çöp toplayıcı otomatik olarak çalışır.

Çöp Toplayıcı Hakkında Bilinmesi Gerekenler Çöp toplayıcının temel görevi , kullanılmayan nesneleri bulmak ve hafızadan silmektir. Ancak çöp toplayıcının ne zaman çöpleri temizleyeceği belli değildir. Bu belirsizlik nedeniyle bazı durumlarda çöp toplama aracını biz programcılar olarak çalıştırmak isteyebiliriz.  Bu araç tetiklense bile, özellikle tetiklenen anda çalışması garanti değildir. Çünkü bu aracın çalışması için bazı durumların olmuş olması gerekiyor. Bu durumların en önemlisi , sanal makine için ayrılan hafızanın  azalmış olması gerekiyor. Bir diğer durum ise kullanılmayan nesnelerin çoğalmış olması gerekiyor. Bu iki durumun oluşması çöp toplama sistemini otomatik devreye sokacaktır.

Çöp Toplayıcıyı Çalıştıran Kod Bunun için  iki farklı kod satırımız vardır: System.gc( ); Runtime.getRuntime.gc( );

Çöp Toplayıcı İşleyişi Çöp toplama yöntemi çeşitlidir. Eski yöntem ve yeni yöntem olarak 2 gruba ayrılabilir. Eski yöntem referans sayma yöntemiyle yapılırdı. Bu yöntemde, bir nesne oluşturulduğunda kendisine ait bir sayaç çalışmaya başlardı. İlgili nesne her kullanıldığında bu sayaç arttırılır, nesnenin yoğun kullanıldığını temsil ederdi. Ve nesneyi kullanan diğer parçalar nesneyle ilişkisini kestiğinde, bu sayaç değeri azalırdı. Bu sayaç değeri ne zaman sıfırlanırsa çöp toplama sistemi tarafından hedef seçilirdi. Çünkü sayacı sıfırlanan nesne kullanılmayan nesnedir.   

Devam İkinci yöntem ise JVM içinde HOTSPOT ( sıcak bölge ) teknolojisi vardır. Bu teknoloji sayesinde hafızadaki nesneler eski ve yeni grup olarak ikiye ayrılır. Şayet bir nesne zaman içerisinde bir çöp toplayıcı tarafından temizlenmişse , hafıza bölgesindeki eski grup alanına kopyalanır. Çöp toplama aracı genel olarak eski nesnelerin bulunduğu bölümle ilgilendiği için , eski grup alanına kopyalanan çöp nesne temizlenir. Ayrıca çöp toplayıcı referansa bağlı olmayan nesneleri hafızadan siler. new Personel( );   //referans yoktur   Ancak bir nesne referansa bağlı ise çöp toplayıcı bunlara dokunamaz!

Örnekler Örneğimizde Personel adında bir sınıfımız vardır. Personel personel = new Personel( );     //nesne oluşturuldu        new Personel( );   //isimsiz bir nesne oluşturuldu       System.gc( );       //çöp toplama aracı tetiklendi 

Örnek Değerlendirme İlk oluşturduğumuz personel nesnesi hafızada yer alacak, kullanılmadığı taktirde hafızadan silinecektir. İkinci oluşturduğumuz personel nesnesi ise isimsizdir yani bir referansa bağlı değildir. Dolayısıyla çöp toplayıcının ilk hedeflerindendir çöp toplayıcı bunu derhal yok edecektir.

ÖRNEK ŞEKİLLENDİRME personel AYNI ÖRNEK İÇİN Personel Personel Referansa Bağlı Nesne Personel Referansa Bağlı Olmayan Nesne ÇÖP TOPLAYICI DEVREYE GİRİYOR

Devam personel Çöp Toplayıcı Aktif Olduktan Sonra: Personel Personel REFERANSA BAĞLI NESNEMİZ BELLEKTEN SİLİNMEDİ REFERANSA BAĞLI OLMAYAN NESNEMİZ BELLEKTEN SİLİNDİ

Finalize Metodu Biz javada çöp toplayıcının çalışmaya başlayacağı esnada bazı komutlar işletmek isteriz, bunu finalize metodunu kullanarak yaparız. Finalize metodunun çalışması için sadece çöp toplama aracının devreye girmesi gerekiyor. Yani bizim bu metodu ayrıca çağırmamız gerekmiyor. Çöp toplama aracı devreye girince otomatik olarak bu metot çağırılacaktır ve bloktaki komutlar işleyecektir. 

HATIRLATMA: Çöp toplayıcının varlığı Java’da bellek sızıntısı olmayacağı anlamına gelmez; fakat bellek sızıntıları daha ender olarak yaşanır ve genellikle bu sızıntıların çözüme kavuşması daha kolaydır.