Soran
Belleğin kirlenmesi

Soru
-
Yazılımda neden çalıştıkça bellek tükeniyor bunu merak ediyorum
Dim dt As DataTable gibi işlemler prosedür içinde çalışıp biten işlemler ama bunlar bellekteki varlığını kirlilik olarak koruyor sanki kendini silmiyormu acaba. Yada rutinler içindeki dizinler filan işi bitince kalıyormu ram de bir yerlerde kirlilik olarak. Yazılımcı prensibi burada nasıl olmalı çıkarken bunlar silinmeli boşaltılmalı yok edilmeli filanmı. Bir prosedürün içinde değişken tanımlarsan o prosedür bitince değişkenler işlevsizdir bunlar hala bir şekilde yermi kaplıyor bellekte acaba neden yazılım çalıştıkça bellek biraz tükeniyor. Çokta tükenmiyor aslında her işi biten değişken kalsa yazılım kasılır kalır bir iki saatte ama yinede ben izliyorum deniyorum biraz ram tüketiyor çalıştıkça. Bence bir kötü kot yazma tarzı var benim çalışmalarımda bunu araştırıyorum. Bu konuda bazı prensipleriniz varmı kot yazarken belleği iyi yönetme konusunda.
- Düzenleyen hakan1992 18 Haziran 2019 Salı 07:00
Tüm Yanıtlar
-
-
Biraz deneme yaptım sizin kaynağı okuduktan sonra hiç değişkenler ile olacak iş değil o yavaşlama. 300 milyon string değişkene değer atadım banamısın demedi pc kapatıncada şak diye ram i eski haline getiriyor. O arasıra olan kasılma çok devasa bir bellek tüketimi bizim yazılımdaki değişkenler ile zerresi bile yapılamaz gibi görünüyor. Belki sqlite dll i yapıyor onu
-
C# Dispose
.Net Developer
Yazı dispose'un en az kullanıldığı yere fazla odaklanmış. Yönetilen nesnelerin daha hızlı kaldırılması olayı çok nadir ihtiyaç duyulan bir olaydır. Büyük nesnelerde zaten GC farklı politika izler.
Dipsose'un temel amacı yönetilmeyen, uygulamanın haricinde oluşturulan nesnelerin temizlenmesidir ki yazı buna yalnızca kalıtım yoluyla değinmiş. Bununla ve .net'in çalışma prensiplerine ilişkin ilgili çok daha düzgün içeriklere CLR via C# kitabından ulaşabilirsiniz. .net de uzmanlaşmak isteyen birisinin mutlaka en az iki kere okuması gereken bir kitap kendisi. Fakat .net core ile bir çok şeyin baştan ele alındığını da unutmamak lazım.
- Düzenleyen Cihan YakarMVP 18 Haziran 2019 Salı 19:12
-
-
Programcının prensibine gelince, şayet bir şey referans türlü olduğunda işi biter bitmez hemen bellekten atılması bekleniyor ise arkadaşımızın dediği IDisposable yolu izlenebilir. Ancak değer türlü bir şeyler için yapabileceğiniz bir şey yoktur, gerek yoktur. Bu tip deneyimler daha çok dilin prensipleri, programlama ve veri yapıları gibi konular üzerinde araştırmalar yaptıkça edinilebiliyor.
- Düzenleyen Cihan YakarMVP 18 Haziran 2019 Salı 19:22
-