Hej! Larre, - Taskmanagers säger väldigt lite om hur mycket minne programmet använder. Framförallt skiljer den ju inte på minne som är delat med andra applikationer (t.ex. dll:er) och exklusivt minne. I det här fallet är nog största delen delat minne. Vad finns det för lämliga program för minnesanalys?Minnesåtgång
Jag är utvecklare i ett företag där användarna arbetar mot en Terminal Server.
På grund av begränsningar i gränsninttet kan de inte se den vanliga klockan nere i högra hörnet.
Därför har jag skrivit en liten applikation som visar tid, datum och vecka. Den uppdateras varje sekund.
Programmet fungerar utmärkt. Men nu när det har körts ett tag tog jag en titt på Taskmanagern och ser då att programmen tar ungefär 4,5 MB i Mem usage, med en del toppar på 10 MB.
Hur kommer detta sig att samma program, till och med samma fil, använder olika mängd minne?
Själva koden för tiden ser ut så här:private void HämtaTid()
{
System.Globalization.GregorianCalendar vecka = new System.Globalization.GregorianCalendar();
lblLokalTid.Text = DateTime.Now.ToLongTimeString() + " " + DateTime.Now.ToShortDateString()
+ " v." + vecka.GetWeekOfYear(DateTime.Now,
System.Globalization.CalendarWeekRule.
FirstFourDayWeek,System.DayOfWeek.Monday);
}
Sv: Minnesåtgång
Den tar helt enkelt vad den kan. Så länge det finns minne tillgängligt så försöker operativsystemet hålla så mycket som möjligt av processen i minnet i stället för att lägga det på swap. Att arbeta mot swap är en 'dyr' operation som kräver både ett sidfel + diskaccess..
Ett normalt 'fenomen' som många som är nya med .net bruakr upptäcka är att en WinForm applikation brukar ta mindre minne efter det att man minimerat den. Samma sak.. windows ser att saker inte behövs och swappar ut dem. Ta fram swap koolumnen i aktivitetsfönstret så kan du kolla hur mycket virtuelt minne som används kontra ramminne.Sv: Minnesåtgång
- Du skapar ett nytt objekt varje gång med "new". Detta minne frigörs inte förrän sophämtaren kommer och städar.
Det är bra att fundera på hur mycket resurser ett program använder men man bör nog använda ett annat verktyg än taskmanagern. Sv: Minnesåtgång
Jag provade skriva en version som använde en privat medlem av kalender istället för att skapa en ny varje gång. Men jag så ingen direkt skillnad då, den tog mer minne.
Vi är ungefär 25 samtida användare på terminal servern (Windows 2000) med 2 GB RAM och jag märker att effektiv minnesutnyttjande behövs, då vi ofta ligger nära gränsen på fysiska minnet.
Men det flyter på bra för användarna och det är det viktigaste.