Om din dator upplever en låg Silverlight-minnesläcka, bör den här artikeln hjälpa dig att åtgärda det.
Godkänd: Fortect
- Ladda ner källprogramvara – 1,18 KB
Det finns för närvarande ingen Space Profiler för Silverlight
Om du någonsin har programmerat i Silverlight, har du förmodligen undrat om dina minnesobjekt verkligen samlas in av GC (sopsamlare). Tänk om hinder kommer att hålla dig i åtanke genom hela din ansökans livstid – visste kunderna det?
Klassiska .NET-lagringsprofiler fungerar faktiskt bra med Silverlight-applikationer. Så om individer har lite minne och vill överväga problemet, är det enda sättet att lösa dessa problem att enkelt konvertera denna användbara lösning till en WPF-applikation, vilket i mitt scenario i början var svårt i bästa fall, var nästan omöjligt.
När ska du verkligen använda en läckagedetektor?
Godkänd: Fortect
Fortect är världens mest populära och effektiva PC-reparationsverktyg. Det litar på miljontals människor för att hålla sina system igång snabbt, smidigt och felfritt. Med sitt enkla användargränssnitt och kraftfulla skanningsmotor hittar och fixar Fortect snabbt ett brett utbud av Windows-problem – från systeminstabilitet och säkerhetsproblem till minneshantering och prestandaflaskhalsar.
Den interna minnesläckagedetektorn jag skrev är avsedd att användas när en person misstänker att ett av föremålen du gör inte samlas in, även om sopsugaren måste samla in det. Du kan använda en intern minnesläckagedetektor för att spåra detta personliga beteende.
Hur använder jag Silverlight Application Memory Detector?
För att använda min minnesläckageflagga, lägg först till objektet du vill spåra genom att anropa detektorns AddReference
sökväg i objektets konstruktor. Sedan, i de fall där objektet redan skulle vara soptippsamlat, anropar jag metoden Check
för att säkerställa att det har samlats in och definitivt är synligt längre i minnet.
Hur får jag sopsamlaren att hämta objekt även om minnesläckagedetektorn kommer åt dem?
Det privata med denna minnesläckagedetektor ligger i tips om hur klassen WeakReference
fungerar. WeakReference
är definitivt en klass som ger den här förmågan att referera till ett befintligt objektlager som skulle förhindra att objektet samlas in artighet inom sopsamlaren. Mer information om webbplatsen för klassen WeakReference
finns här.
The Code One – Presentation
Minnesläckagedetektorn upprätthåller en absolut baslista som kallas elementsList
, som består av ObjectStruct
detaljer. Varje element har en WeakReference
för vilken dessa spårade objekt och objekt innehåller felsökningsvärden. Du kan rita på StackTrace ()
var som helst för att identifiera hur illustratören av det spårade objektet. Det här fältet kan hjälpa dig att hitta tillverkaren av säkerhetskopieringsenheten som har läckt.
Koden är nästan säkert uppdelad i tre huvudsakliga statiska metoder. De två första ska anropas, de sista, SignalDisposed
, är för felsökning. Metoder:
-
Lägg till länk
main – Lägger till objektet du vill övervaka till en ny lagerdetektor. Du kan välja om du vill öka storleken på “StackTrace” när du skapar ett objekt. Konstruktörsprodukten är ett bra ställe att kalla denna formel.
Det skulle vara trevligt att avgöra vilket objekt som faktiskt är associerat med spårade element i minnet. Kontrollera
– Använd denna metod för att kontrollera minnesstatusen. En bra lokal att tvingas Det e samtalet i detta telefonsamtal kan vara en inaktiv notifiering genom din uppgift där du kan återställa och samla de flesta redan skapade objekten. Varje anrop till den viktigaste Check
-processen ökar den statiska craft-räknaren med ett, vilket ger oss en metod för att hålla reda på spårade objekt varje gång de skapas. Kommandotermen Debugger.Break ()
stoppar programmet på ett element så att du verkligen kan kontrollera alla objekt i minnet. SignalDisposed
– Min erfarenhet av att ha upptäckt minnesläckor med en detektor när jag använder Firefox-tillägget för den semantiska webben ledde mig till den sista delen om vanligtvis behovet av booleska variabler va Indikerar var indikerar Kasta
att de övervakade enhetsfunktionerna har anropats eller inte. För att felsöka ringflödet, använd den här metoden i metoden Dispose ()
för att verkligen uppdatera Acceptera alla skript genom vilka metoden Dispose ()
har anropats, men objektet finns kvar i minne. Anmärkningar:
("DEBUG")
beroende som låter dig använda en minneshålsindikator i ditt projekt oavsett prestanda med avseende på den slutliga versionen av din applikation. göra. Mer information om attributet Conditional
kan enkelt hittas här. Idéer för framtida utveckling