2008-08-13 20 views
6

CF Remote Performance Monitor'u kullandım, ancak yönetilen dünyanın aksine yalnızca yönetilen dünyada başlatılan belleği izlemek gibi görünüyor. Eh, sadece profilerde listelenen sayılar izin verilen maksimum (CE 5 32mb) kısa yol olarak kabul edebilir. Belirli bir uygulamayı RPM ile profillemek, tüm önbelleklerin toplam kullanımının yalnızca 12mb'ye ulaşmayı başardığını ve daha sonra, daha fazla bellek talep etmek için yönetilmeyen bir şeyin başladığını düşündüğümde (bence) yavaşça küçüldüğünü gösterdi. Sistemdeki bellek kaydırıcısı, cihazın bellekte çok kısa olduğunu da gösterir. Süreci öldürürsem, kaydırıcı geri gelen tüm belleği gösterir. Yani (?) Belleği yutmuş bu yönetilen süreç olmalıdır.Kompakt Çerçevede geliştirirken tüm belleğinizi bulmanın en iyi yolu nedir?

Yönetilmeyen bellek kullanımını bir şekilde karşılık gelen P/Invoke çağrılarıyla eşleştirmemi sağlayacak şekilde nasıl izleyebileceği herhangi bir basit (ish?) Moda var mı?

DÜZENLEME: Yeniden etiketleme yaptığınız her şey için, .NET değil, bu soruyu şunun gibi karıştırıyor. .NETCF/Compact Framework. Onlar benzer göründüğünü biliyorum ama onlar farklı çünkü .NET CF temelde sadece NotImplementedException etrafında bir sarıcı olduğunu.

+1

".NET, CF yalnızca temel olarak NotImplementedException etrafında bir paketleyicidir." Bu alıntıyı seviyorum! – Stormenet

cevap

3

Interop logging'u etkinleştirmeyi deneyin. Eğer kullandığınız yerli dll koduna erişim varsa da

, bu check out: Kesinlikle bir süre app yönetilen bir C# yönetilmeyen konularla mücadele ettik http://msdn.microsoft.com/en-us/netframework/bb630228.aspx

+0

Bu eski yazı olduğunu biliyorum ama umarım bunu göreceksiniz ve cevap vereceksiniz. İkinci bağlantı, görsel stüdyo için en üst düzey bir site gibi görünen http://msdn.microsoft.com/en-us/vstudio/aa496123 adresine gider. Ne bağlı olduğunu hatırlıyor musun? –

1

- bu kolay değil.

En yararlı bulduğum şey, bir metin günlük dosyasına düzenli bir çıktı almaktır. Örneğin, yeni bir form her yüklediğinizde, her birkaç dakikada bir GlobalMemoryStatus çıktısını yazdırabilirsiniz. Buradan en azından hafızanın yavaş yavaş aşındığını veya günün belirli zamanlarında büyük bir hafıza parçasının kaybolduğunu görebilirsiniz.

Bizim için, cihaz kullanıldığı sürece tüm gün kademeli bir hafıza kaybı tespit ettik. Oradan sonunda, barkod tarama cihazının belirli bir nedenden dolayı Form temel sınıfımızda başlatıldığını gördük (önceki geliştiriciyi suçluyorum! :-)

Bu günlük kaydı ayarlamak küçük bir güçlük olabilir, ama bizim için uzun vadede, özellikle de canlı kullanımdaki cihazla ilgili büyük temettü ödemeleri gerçek veriler, enstrümantasyon, istisnalardan yığın izleri vb. alabiliriz.

1

Tamam, C++ kullanıyorum C# değil, bu yüzden bu olmayabilir yararlı, ama ...

Windows CE altında bellek ve kaynak kullanımını, sızıntıları ve özel durumları izleyen Entrk toolbox adlı bir paket kullanıyorum. Boundschecker'ın hafif bir CE versiyonu gibi. En çok hile yapar.

İlgili konular