Çöp toplama nedir? Programlarınız için otomatikleştirilmiş bellek yönetimi


Bu makale, çöp toplama algoritmalarına genel bir bakış ve Java ve Python gibi bazı popüler programlama dillerinde çöp toplamanın nasıl uygulandığı dahil olmak üzere çöp toplamayı tanıtmaktadır. Buna girmeden önce, çöp toplamanın artılarını ve eksilerini ele alalım. Bellek ayırma hataları için neden bu kadar yaygın bir çözümdür? Çöp toplamayı kullanmayan C ve C++ gibi dillerde bellek yönetiminin tehlikeleriyle başlayacağız.

C/C++’da bellek yönetiminin tehlikeleri

Bellek ayırma sorunları, potansiyel hatalara ve güvenlik açıklarına neden olan C/C++’da yaygın olan sorunların yalnızca bir alt kümesidir, ancak bunlar büyük bir alt kümedir ve izini sürüp düzeltmesi çok can sıkıcıdır. Bellek ayırma hataları aşağıdaki senaryoları içerir:

  • Ayırdığınız belleğin serbest bırakılmaması, bu da sonunda sistemdeki tüm RAM’i kullanabilir ve yalnızca programı değil, tüm bilgisayarı çökertebilir.
  • Bellek potansiyel olarak rastgele sonuçlarla serbest bırakıldıktan sonra bir işaretçi aracılığıyla arabellek okumaya veya yazmaya çalışmak (diğer adıyla sarkan işaretçi).
  • Bellek yöneticisini ve sonunda programı ve hatta tüm sistemi çökertebilen bir bellek bloğunu iki kez serbest bırakmak.

Diğer yaygın C/C++ güvenlik açıkları, arabellek taşmalarını ve kodun üzerine veri yazabilen dize manipülasyonunu içerir. “Eğlenceli” kısım, bir saldırganın verileri kötü niyetli yürütülebilir kod olacak şekilde hazırlaması ve ardından kodu çalıştırmayı başarmasıdır.

Bekleyin bekleyindiyorsun: korumalı mod sistemindeki ayrı kod ve veri segmentleri nedeniyle bu artık gerçekleşemez. Ne yazık ki, bazı durumlarda hala olabilir ve oluyor. Bir dizgede bir SQL deyimi oluşturan ve ardından yürütme için bir veritabanına gönderen ve genellikle bir SQL enjeksiyon güvenlik açığı oluşturan bir program buna bir örnektir. Elbette, SQL enjeksiyon güvenlik açıklarından kaçınmak için iyi belgelenmiş en iyi uygulamalar var, ancak bu kategorideki yeni hatalar veritabanı istemcilerinde artmaya devam ediyor, bu nedenle her programcının en iyi uygulamaları takip etmediği açık.

Çöp toplama: Kusurlu tedavi

Çöp toplamayı kullanmak, ana bellek tahsisi ve serbest bırakma sorunlarını tamamen ortadan kaldırabilir, ancak bunun bir bedeli vardır. En büyük sorunlar, çöp toplayıcının ek yüküdür; çöp toplayıcı çalışmaya karar verdiğinde öngörülemeyen duraklamalar; ve bir sunucu işlemi durduğunda artan gecikme. İkinci sorun genellikle Java tabanlı sunucu programlarında ortaya çıkar.

Çöp toplamanın ek yükü önemli olabilir ve bellek ile performans arasında bir değiş tokuşu içerir. 2005’e göre kağıt Matthew Hertz ve Emery D. Berger tarafından:

Telif hakkı © 2023 IDG Communications, Inc.


Kaynak : https://www.infoworld.com/article/3685493/what-is-garbage-collection-automated-memory-management-for-your-programs.html#tk.rss_all

Yorum yapın