Als uw pc te maken heeft met een Silverlight-geheugenlek met een lage baseline, zou deze hulp en dit advies u moeten helpen dit op te lossen.
Goedgekeurd: Fortect
- Bronsoftware downloaden – 1,18 KB
Er is momenteel geen Space Profiler voor Silverlight
Als je ooit in Silverlight hebt geprogrammeerd, heb je je waarschijnlijk afgevraagd of je geheugenobjecten meestal worden verzameld door de GC (garbage collector). Wat als obstakels u tijdens de looptijd van uw aanvraag in gedachten zullen houden – wist iemand dat?
Klassieke .NET-opslagprofilers werken niet alleen goed met Silverlight-toepassingen. Dus als we allebei een beetje geheugen hebben en naar het probleem willen kijken, is de enige manier om dat probleem op te lossen het omzetten van deze nuttige oplossing met een WPF-toepassing, wat in mijn scenario op zijn best moeilijk was, bijna onmogelijk was.
Wanneer moet u echt een lekdetector gebruiken?
Goedgekeurd: Fortect
Fortect is 's werelds meest populaire en effectieve pc-reparatietool. Miljoenen mensen vertrouwen erop dat hun systemen snel, soepel en foutloos blijven werken. Met zijn eenvoudige gebruikersinterface en krachtige scanengine kan Fortect snel een breed scala aan Windows-problemen vinden en oplossen - van systeeminstabiliteit en beveiligingsproblemen tot geheugenbeheer en prestatieproblemen.
De interne geheugenlekdetector die ik heb geschreven is bedoeld om te worden gebruikt wanneer iedereen vermoedt dat een van de objecten die je schrijft niet wordt verzameld, hoewel de vuilnisliefhebber het moet ophalen. U kunt een lekdetector voor een opslagapparaat gebruiken om dit geplukte gedrag op te sporen.enia.
Hoe gebruik ik de Silverlight Application Memory Detector?
Om de lekvlag van mijn opslagapparaat te gebruiken, voegt u eerst het object toe dat u zoekt om te volgen door het AddReference
-pad van de detector in de constructor van het object aan te roepen. Dan, telkens als het object al door het afval zou moeten zijn verzameld, roep ik de Check
-methode aan om zeker te weten dat het is verzameld en niet een van de langer zichtbare in het geheugen is.
Hoe zorg ik ervoor dat de vuilnisman objecten ophaalt, zelfs als de geheugenlekdetector ze gebruikt?
De techniek van deze geheugenlekdetector ligt in zekere zin dat de klasse WeakReference
werkt. WeakReference
is absoluut een klasse die de mogelijkheid biedt om naar een bestaande objectopslag te verwijzen om te kunnen voorkomen dat het object wordt verzameld, wat meestal wordt geassocieerd met de garbagecollector. Meer informatie over de plaats van de klasse WeakReference
kan hier worden gevonden.
The Code One – Presentatie
De geheugenlekdetector houdt de perfecte basislijst bij, genaamd elementsList
, die bestaat uit ObjectStruct
-details. Elk element is gemaakt van een WeakReference
waarvoor hun trackedobject en object debug-waarden bevatten. U kunt StackTrace ()
overal gaan gebruiken om de huidige illustrator van het gevolgde object te identificeren. Dit veld helpt u bij het vinden van de fabrikant van het uitgelekte zelfopslagapparaat.
De code is zonder twijfel onderverdeeld in drie statische hoofdmethoden. De eerste twee moeten worden aangeroepen, de laatste i, SignalDisposed
, is voor het oplossen van problemen. Methoden:
-
Link toevoegen
main – Voegt het object toe dat u wilt bewaken, ik zou zeggen de magazijndetector. U kunt kiezen of u volume wilt toevoegen aan “StackTrace” wanneer u een object maakt. Het doel van de constructor is een goede plaats om dit proces aan te roepen.
Het zou leuk zijn om te begrijpen welk object daadwerkelijk wordt geassocieerd met bijgehouden fysieke objecten in het geheugen. Check
– Gebruik dit pad om de geheugenstatus te controleren. Een goede zet om geforceerd te worden De e oproep van deze telefoon kan een inactieve melding zijn via uw implementatie waar u de meeste reeds gemaakte objecten kunt resetten en verzamelen. Elke aanroep van een bepaald Check
-proces verhoogt de statische hulp die u bouwt met één, wat ons een methode geeft om u te helpen bij het bijhouden van bijgehouden objecten elke keer dat ze worden gemaakt. Het Debugger.Break ()
beheer stopt de applicatie op een element zodat ze alle objecten in het geheugen kunnen controleren. SignalDisposed
– Mijn ervaring, samen met het detecteren van geheugenlekken met een detector tijdens het uitvoeren van werkzaamheden aan de Firefox-add-on voor het semantische web, leidde me naar het laatste deel over ongetwijfeld de noodzaak van booleaanse variabelen va Geeft aan in het geval dat aangeeft Dispose
zou het bewaakte apparaat al dan niet zijn aangeroepen. Gebruik deze methode in de methode Dispose ()
om de ‘flow’ te debuggen om echt de scripts te updaten waarvoor de methode Dispose ()
wordt aangeroepen, maar het object blijft in geheugen. Opmerkingen:
("DEBUG")
, afhankelijk van welke u een geheugenuitstroomindicator in uw project kunt gebruiken, ongeacht de prestaties in de definitieve versie van uw toepassing. maken. Meer informatie over het Conditional
attribuut kan hier gemakkelijk gevonden worden. Ideeën voor toekomstige ontwikkeling