Python uygulamalarındaki bellek sızıntıları genellikle kolayca teşhis edilebilirken, C uzantı modüllerindeki sızıntılar farklı bir hikaye sunar. Geleneksel bellek metrikleri (RSS, VMS gibi) bu tür sızıntıları çoğu zaman ortaya çıkaramaz çünkü Python'ın kendi bellek yöneticisi (pymalloc), platformun yerel heap'i üzerinde çalışır. Bir C uzantısı malloc() çağrısı yapıp karşılığında free() yapmadığında, bu bellek sızıntısı Python'ın referans sayımlarında, tracemalloc modülünde veya gc istatistiklerinde görünmez. Hatta bellek ayırıcının önbelleklemesi nedeniyle RSS veya VMS değerlerinde bile belirgin bir artış olmayabilir. Bu durum, özellikle NumPy, pandas, PyTorch gibi C uzantılarına dayanan birçok popüler Python projesi için ciddi sorunlara yol açabilir.
psutil 7.2.0 sürümü, bu tür yerel bellek sızıntılarını yakalamak için özel olarak tasarlanmış iki yeni C heap inceleme API'si sunuyor. Bu API'ler, Python'ın bellek yönetimini tamamen atlayarak doğrudan temel platform bellek ayırıcısına (örneğin glibc'nin malloc'u) bir pencere açar. Böylece, C katmanının gerçekte ne kadar bellek tükettiğini izlemek mümkün hale gelir. heap_info() fonksiyonu, heap_used (küçük malloc tahsisleri), mmap_used (büyük malloc veya mmap tahsisleri) ve Windows'a özel heap_count gibi metrikleri gösterir. heap_trim() ise, kullanılmayan heap belleğini serbest bırakması için temel bellek ayırıcısına çapraz platform bir yol sunar.
Bu yeni özellikler sayesinde, RSS değeriniz sabit kalırken C heap kullanımınızın arttığını görebilirsiniz. Bu, Python geliştiricilerine, Valgrind'e benzer bir yaklaşımla, C uzantılarındaki gizli bellek sızıntılarını tespit etme ve giderme konusunda güçlü bir araç sağlar. Artık C seviyesindeki bellek sorunları, Python'ın kendi araçları tarafından gözden kaçırılmadan doğrudan izlenebilir hale geliyor.
psutil'in yeni API'leri, Python C uzantılarındaki geleneksel yöntemlerle tespit edilemeyen bellek sızıntılarını doğrudan platform seviyesinde izleyerek geliştiricilere kritik bir hata ayıklama aracı sunuyor.