Du kan få feilmeldingen "System.OutOfMemoryException" når du viser ASP.NET-sider på en server som har 3 GB RAM


Symptomer


Når du viser ASP.NET-sider på en server som har 3 gigabyte (GB) RAM eller mer installert, kan det hende følgende unntak feilmelding, uansett om det er fremdeles fysisk minne på serveren:
System.OutOfMemoryException

Årsak


Common language runtime genererer en OutOfMemoryException feil hvis den ikke kan tildele fysisk minne, eller reservere nok virtuelt minne (VM) – til å oppfylle en forespørsel om minnetildeling. Som standard er det adresserbare-virtuelle minneområdet som er tilgjengelige for prosessen 2 GB. Hvis det virtuelle adresseområdet er oppbrukt, kan operativsystemet kan ikke tildele mer fysisk minne for prosessen.

Løsning


På datamaskiner som kjører følgende operativsystemer, kan du slå på den spesielle funksjonen 4GT RAM-justering:
  • Microsoft Windows Server 2003-serien
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows NT 4.0 Enterprise Edition
4GT RAM-justering -funksjonen tillater at hver prosess for å håndtere opptil 3 GB virtuelt minne. Hvis du vil aktivere denne funksjonen, må du legge til 3 GB -bryteren i Boot.ini-filen. Hvis du vil ha mer informasjon, kan du gå til følgende Microsoft-webområde:Single-konfigurasjoner kan ikke adressere mer enn 3 GB virtuelt minne på grunn av begrensninger i operativsystemet. Hvis du vil bruke tilgjengelig fysisk minne mer effektivt, kan du bruke flere prosesser. ASP.NET under Microsoft Internet Information Services (IIS) 5.0 tillater for eksempel at Webgarden-modus for å kjøre en arbeidsprosess for hver prosessor på en flere CPU-server. For systemer som kjører IIS 6.0, kan du konfigurere Web-området for å kjøre egne programmer i et applikasjonsutvalg. Selv med 4GT RAM-justering funksjonen aktivert, kan ikke en enkelt prosess, tildele alle 3 GB minne. Alle system-DLLene er lastet inn i faste VM-adresser. Derfor blir det øvre området for VM fragmentert. Minnebehandling må reservere et segment av VM å gjøre minnetildeling. Prosessen kan ikke tildele mer minne hvis minnebehandling ikke finner et sammenhengende VM-adresseområde for neste segment. Størrelsen på segmentet er vanligvis tilstrekkelig store (32 eller 64 MB). Dette problemet er ikke spesifikk ASP.NET eller common language runtime. Det er en begrensning for operativsystemet for alle typer prosessen.

Status


Denne virkemåten er standard.

Referanser


Hvis du vil ha mer informasjon om 4GT RAM-justering, kan du gå til følgende Microsoft-webområde:Hvis du vil ha mer informasjon, kan du klikke følgende artikkelnumre for å vise artiklene i Microsoft Knowledge Base:
171793 informasjon om kjøring av 4GT RAM-justering
316739 hvordan du bruker/USERVA-bryteren i Boot.ini-filen til å justere 3 GB-konfigurasjoner