Ich arbeite an einer kleinen Lesezeichenverwaltungsanwendung, die in C# geschrieben wurde und WPF verwendet. Es sitzt nur in der Taskleiste und ist 99% der Zeit im Leerlauf. Vor kurzem habe ich im Task-Manager nachgesehen und herausgefunden, dass es ungefähr 25 MB Speicher benötigt (und ungefähr 12 MB, bevor es zum ersten Mal aktiviert wird), was ich für eine App hielt, die die meiste Zeit nichts tut. Das brachte mich dazu, mich zu fragen, ob es Möglichkeiten gibt, die Speichernutzung zu reduzieren, indem beispielsweise WPF-Funktionen, die optional sind, deaktiviert werden.So reduzieren Sie die Speichernutzung einer WPF-App
Ich habe eine Tatsache entdeckt, die zu etwas führen könnte, obwohl ich keine Möglichkeit kenne, es zu nutzen. Threads in .NET benötigen jeweils etwa ein Megabyte, und es stellt sich heraus, dass meine App etwa 6/12 Threads verwendet (vor und nach der ersten Aktivierung). Dies ist für die Hälfte meiner Speicherbelegung verantwortlich, die ziemlich signifikant ist. Ich spreche keine neuen Threads direkt, aber ich habe keine Ahnung, wie WPF, sowie andere Teile von .NET, Threads für verschiedene Aufgaben verwendet, so dass ich es schwer finde, etwas dagegen zu tun. Wenn Sie Ereignisse für Dinge verwenden, die nicht direkt mit der GUI in Verbindung stehen, werden dadurch neue Threads erzeugt?
Also meine Frage ist zweifach, wie können Sie die Speichernutzung .NET/WPF-Anwendungen im Allgemeinen reduzieren und wie können Sie die Anzahl der Threads minimiert werden? Beachten Sie, dass ich nicht so sehr über kleine Details nachdenke, wie sie in this answer angesprochen wurden, sondern eher, wie Sie für eine geringe Speichernutzung in Ihrer gesamten Anwendung entwerfen.
Ich verwende Vista 64-Bit. Um ehrlich zu sein, ist es nicht wirklich etwas, worüber ich mir zu viele Sorgen mache. Ich meine, bei den aktuellen Hardware-Preisen ist der Speicher praktisch frei - es ist praktisch möglich, jede Kopie meines Programms mit einem 2-GB-Speicherstick zu bündeln;) –
Sie werden sich darum kümmern, wenn Sie auf Terminal-Diensten, Server-Admin don Ich möchte 30 Leerlaufprozesse sehen, die ungefähr 1 GB RAM verschwenden. –
Sie werden sich auch Sorgen machen, wenn viele andere ähnliche Anwendungen laufen, von denen jede viel RAM verwendet. Es ist wie die Straßen, bauen mehr Straßen und Sie am Ende mit mehr Stau, kaufen mehr RAM und Sie finden Ihre Box immer noch mehr benötigt. – gbjbaanb