{"id":221,"date":"2006-04-13T10:07:49","date_gmt":"2006-04-13T08:07:49","guid":{"rendered":"http:\/\/www.puls200.de\/?p=221"},"modified":"2006-04-13T10:30:41","modified_gmt":"2006-04-13T08:30:41","slug":"speicherhunger","status":"publish","type":"post","link":"https:\/\/www.puls200.de\/?p=221","title":{"rendered":"Speicherhunger"},"content":{"rendered":"<p>Wir haben ein Speicherleck! (oder doch nicht?) Konkreter Fall: Der Kunde meldet sich und beschwert sich \u00fcber den exorbitanten Speicherverbrauch der Anwendung. Beigelegt hat er einen Screenshot vom Task Manager.<\/p>\n<p>Was wird eigentlich im Task Manager angezeigt?<\/p>\n<p>Der Task Manager zeigt die sog. \"Working size\" des Prozesses an. Dies bezeichnet den derzeit real (physikalisch) allokierten Speicher der Anwendung. Dieser \"Speicherverbrauch\" ist aber aus folgenden Gr\u00fcnden irref\u00fchrend und sollte nicht (oder nur als grober Anhaltspunkt) f\u00fcr die Performance der Anwendung herangezogen werden:<\/p>\n<ul>\n<li>Der Speicher wird von Windows gem\u00e4\u00df der Priorisierung allokiert. Minimiert man die Anwendung, kann man sofort sehen wie der Speicherverbrauch zur\u00fcckgeht.<\/li>\n<li> .NET Anwendungen laufen in einer sog. \"Sandbox\", der .NET Runtime Umgebung. Diese ist auch in der angegebenen Speichermenge enthalten. Die eigentliche Anwendung macht also nur einen Teil dieses Speicherverbrauchs aus.<\/li>\n<li>Laufen mehrere .NET Anwendungen gleichzeitig, k\u00f6nnen diese Teile der .NET Runtime Umgebung gemeinsam nutzen.<\/li>\n<\/ul>\n<p>Ein besserer Anhaltspunkt f\u00fcr den Speicherverbrauch sind die sog. \"private bytes\". Dies bezeichnet die Menge an Speicher, die von der Anwendung nicht mit anderen Anwendungen geteilt werden kann. Der Task Manager kann diese jedoch <em>nicht<\/em> anzeigen.  (Das gelingt jedoch mit dem <a href=\"http:\/\/www.sysinternals.com\/Utilities\/ProcessExplorer.html\">ProcessExplorer<\/a> oder perfmon (Start -> Ausf\u00fchren -> Perfmon). Diese Zahl ist jedoch auch mit Vorsicht zu genie\u00dfen: Sie bezeichnet sowohl aktiven als auch ausgelagerten (paged) Speicher, d.h. Hauptspeicheranteile, die aufgrund von Inaktivit\u00e4t auf die Festplatte ausgelagert wurden. Steigen die \"private bytes\" im Laufe der Zeit immer weiter an, ist ein Speicherleck vorhanden. Dies mu\u00df jedoch \u00fcber einen langen Zeitraum beobachtet werden, da die Speicherverwaltung von der .NET Runtime durchgef\u00fchrt wird und es teilweise recht lange dauert, bis Objekte wieder freigegeben werden (besonders wenn sie ausgelagert sind).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wir haben ein Speicherleck! (oder doch nicht?) Konkreter Fall: Der Kunde meldet sich und beschwert sich \u00fcber den exorbitanten Speicherverbrauch der Anwendung. Beigelegt hat er einen Screenshot vom Task Manager. Was wird eigentlich im Task Manager angezeigt? Der Task Manager &hellip; <a href=\"https:\/\/www.puls200.de\/?p=221\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/posts\/221"}],"collection":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=221"}],"version-history":[{"count":0,"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/posts\/221\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}