Bir C# programında, bellek kullanımını ölçmeye çalışıyorum.C# ile bellek kullanımını nasıl ölçebiliriz (Java’da yapabileceğimiz gibi)?
Bu Java fonksiyonunun C# eşdeğer bilmek istiyorum: yığın için ayrılan toplam belleği temsil
ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getCommitted()
. C# programm için ayrılan belleğin toplam boyutunu bilmek için buna ihtiyacım var.
ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed()
Şu anda kullanılan bellek almak için C# kullanırız:
Process_Memory = MyProcess.PrivateMemorySize64;
Ama olduğuna tamamen emin değilim
Sonra Java Birlikte kullanılan bellek alabilirsiniz eşdeğer.Özgeçmişimde C# uygulamam için toplam ayrılmış alanı nasıl alabilirim ve o anda geçerli kullanım t?
DÜZENLEME:
yanıtlarındanve daha ileri araştırmalar bunu belirlemek ettik: numarasını ver kullanım
System.GC.GetTotalMemory(false);
yılında
Güncel bellek bayt akımı y yönetilen bellekte ayrılmıştır. (http://msdn.microsoft.com/fr-fr/library/system.gc.gettotalmemory.aspx)
Bu yöntem düşük değer döndürmek ve ben getUsed()
yılında Java ile alabilirsiniz gerçekten kullanımda tüm bellek temsili değil eminim. Aynı uygulama için java'da bellek 5MB'de başlar ve maksimum 125MB'a çıkar. C# ile yukarıdaki yöntemle 1'den 5 MB'ye çıkar.
MyProcess.PrivateMemorySize64; // return ~=25MB
veya
MyProcess.WorkingSet64; //return ~=20MB
kullanımda tüm belleğin daha doğru bir değer verin: O gibi görünüyor. Ama bilmem gereken bir tane ...küresel ayrılmış bellek için
this article kullanmayı öneriyor: O 169MB hakkında, programm boyunca aynı değerini daimadönmek
Process_MemoryEnd1 = MyProcess.VirtualMemorySize64;
o Java ile karşılaştırıldığında adil görünüyor: 64MB’den 170’e MB maksimum
Hala bulunan tüm doğru cevap arıyorumçok muğlak ve ben buldum belgeler undertand gerçekten emin değilim Windows bellek yönetimi ile çok aşina değilim:/
Evet bunu biliyorum ama Yönetilen yığındaki nesnelerin gerçek boyutunu verir, düşük bir değerdir. Bunun, tahsis edilen tüm hafızanın temsilcisi olduğunu sanmıyorum. –
Öyleyse ham tahsis edilen hafızayı (yani yönetilen GC işlevselliğini dikkate almayan) istiyorsanız, 'Process' sınıfının tüm özelliklerini kullanmanız gerektiğine inanıyorum. 'PagedMemorySize64',' PrivateMemorySize64', vb – Tyson
Teşekkürler, bu yüzden sadece processus toplam tahsis edilen bellek istiyorum eğer 'PrivateMemorySize64' yeterli olabilir düşünüyorum. Disk belleği olanı almıyorum ... –