Wir haben eine ziemlich große Silverlight 4-Anwendung. Wir sind dabei, Speicherlecks in der Anwendung zu finden, und dies hat sich zu einer entmutigenden Aufgabe entwickelt.Silverlight Memory Leaks
Die Dinge haben sich komplett mit diesem geändert, für diejenigen von euch, die den ursprünglichen Post gesehen haben!
Ich erkannte, dass ANTS Speicher Profiler zeigte mir nicht die richtigen Sachen. Das lag daran, dass das Speicherleck nicht im verwalteten Code, sondern im systemeigenen Code enthalten war. Ich habe ein paar Probleme mit ANTS behoben - es ist ein gutes Werkzeug für Speicherlecks mit verwaltetem Code.
So fand ich diesen Blog,
war ausgezeichnet. Ich habe xPerf und xPerfViewer verwendet, um den systemeigenen Heap anzuzeigen und zu sehen, was ich vermute, ist der tatsächliche Speicherverlust.
So kann ich einen Stack-Trace, die wie folgt aussieht,
CCoreServices::Draw
CCoreServices::Tick
CUElement::Render
CUIElement::Render
CUIElement::RenderWithTransform
CUIElement::RenderVisual
CUIElement::RenderChildren
{Repeat of the above in a recursive fashion}
So in dieser Methode ‚Render‘ irgendwo ordnet etwa 520 Byte Speicher, und soweit ich es tut kann nicht sagen, befreie es.
Ich kann auch eine Methode oder Klasse
SDBitmapCreate
ist Speicher undicht sehen, genannt.
Interessant, weil es scheint, als ob ich etwas gefunden habe, aber ich bin nicht wirklich sicher was.
Haben Sie noch weitere Vorschläge?
Danke.
Wie verwenden Sie ANT, um Speicherlecks zu erkennen? Das einzige "ANT", das ich kenne (oder über Google finden konnte), ist das Java-Build-Tool (http://ant.apache.org/). Ist es das, worauf du dich beziehst, oder gibt es ein Silverlight ANT-Tool, von dem ich nichts weiß (und es unbedingt tun muss)? –
Macht nichts, entdeckte es schließlich: http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/ –
Ja, das ist die eine. Sie können nach Namespace filtern, und normalerweise erwarten Sie bei einem Speicherleck Klassen in Ihren eigenen Namespaces, die undicht sind. Das ist hier nicht der Fall, Sachen im Silverlight-Framework sind undicht. Ich bin mir sicher, dass wir es verursachen, aber es macht es nur schwieriger zu erkennen, und es ist schwieriger, die Ursache zu finden. – peter