Je hebt 32 GB RAM, dus een gids vertelde je dat het wisselbestand een overblijfsel is uit de tijd van kleinere machines en weg kan. Of een game crashte met een out-of-memory-fout terwijl Taakbeheer genoeg vrij RAM liet zien. Of midden in een match meldde Windows "Your computer is low on memory" en vroeg je programma's te sluiten.
Alle drie komen voort uit hetzelfde mechanisme, en dat is niet het mechanisme waar het advies om het uit te zetten van uitgaat.
Waar het wisselbestand voor is
Windows deelt geheugen in twee stappen uit. Een programma legt eerst geheugen vast (commit), waarmee Windows belooft dat de ruimte bestaat, en schrijft er pas later naar. De inleiding tot het wisselbestand van Microsoft definieert het plafond van die beloften: de commitlimiet van het systeem is de som van het fysieke geheugen en alle wisselbestanden samen.
Het totaal van alle beloften is de commit charge, en dat is niet hetzelfde als het RAM dat in gebruik is. De prestatiegids van Microsoft over vastgelegd geheugen wijst erop dat vastgelegd geheugen niet per se is beschreven of aangeraakt, dus de commit charge kan de limiet bereiken terwijl er nog volop fysiek geheugen beschikbaar is. Zo kan een game zonder geheugen komen te zitten terwijl Taakbeheer vrij RAM laat zien.
Het wisselbestand heeft een tweede taak: geheugen bewaren dat is gewijzigd maar zelden wordt gebruikt, zodat Windows het uit het RAM kan halen en dat RAM aan iets drukkers kan geven. De derde taak, crashdumps, heeft hieronder een eigen sectie.
Wat er gebeurt zonder wisselbestand
Zonder wisselbestand wordt de commitlimiet volgens de gids van Microsoft voor de grootte van het wisselbestand iets kleiner dan het geïnstalleerde fysieke geheugen. De beloften van elk programma moeten dan binnen het RAM passen, ook geheugen dat is beloofd en nog niet gebruikt.
Bereikt de commit charge de limiet, dan krijgen het systeem en processen volgens de inleiding mogelijk geen vastgelegd geheugen meer, wat kan leiden tot vastlopen, crashes en andere storingen. Mark Russinovich, die in 2008 over het virtuele geheugen van Windows schreef, zei het zonder omwegen: wanneer de commitlimiet is bereikt, mislukken toewijzingen die geheugen vastleggen. Een game die op dat moment om geheugen vraagt, krijgt het niet.
Hij beantwoordde ook het snelheidsargument. Sommigen vinden dat geen wisselbestand betere prestaties oplevert, schreef hij, en bij sommige werkbelastingen kan dat zo zijn; maar in het algemeen laat een wisselbestand Windows pagina's wegschrijven die niet actief worden gebruikt, waardoor er meer bruikbaar geheugen voor het systeem overblijft. De inleiding van Microsoft voegt eraan toe dat sommige producten en services een wisselbestand vereisen.
Crashdumps hebben het ook nodig
Wanneer Windows crasht met een stopfout, wordt het verslag van wat er misging standaard via het wisselbestand weggeschreven. De dumpdocumentatie van Microsoft zegt dat de inhoud van het RAM naar het wisselbestand wordt geschreven op de partitie waarop Windows is geïnstalleerd, dat het wisselbestand op het opstartvolume moet staan om de dumpfunctie te laten werken, en dat het moet worden teruggezet als het naar een ander volume is verplaatst. Met het standaard dumptype, Automatische geheugendump, en een wisselbestand op Door het systeem beheerde grootte geeft Windows het wisselbestand een grootte waarmee een kernelgeheugendump in de meeste gevallen kan worden vastgelegd.
Het dialoogvenster Virtueel geheugen waarschuwt hier zelf voor: als je het wisselbestand uitschakelt of de begingrootte onder een bepaald aantal megabytes zet en er een systeemfout optreedt, legt Windows mogelijk geen gegevens vast die kunnen helpen het probleem te achterhalen. Zonder die gegevens wordt uitzoeken waarom een game crashte moeilijker.
Controleer hoe dicht je bij het plafond zit
Open Taakbeheer, ga naar Prestaties en selecteer Geheugen. "Committed", het vastgelegde geheugen, toont twee getallen: de commit charge en daarna de commitlimiet. Komt het eerste tijdens het spelen dicht bij het tweede, dan zit je bij het plafond waar deze pagina over gaat, wat "In use (Compressed)", het gebruikte RAM, ook zegt.
Twee gidsen van Microsoft geven iets verschillende drempels voor die verhouding. De prestatiegids hierboven noemt alles boven 75% dicht bij opraken; de huidige gids van Microsoft voor het oplossen van prestatieproblemen noemt 0 tot 50% in orde, 60 tot 80% een waarschuwing en 80 tot 100% kritiek.
Om te zien welk programma de beloften vasthoudt, heeft het tabblad Details per proces een kolom "Commit size", de hoeveelheid vastgelegd geheugen; Kolommen selecteren voegt die toe als hij verborgen is. Is het geheugen van Windows al eens krap geworden, dan legt Windows gebeurtenis 2004 van Microsoft-Windows-Resource-Exhaustion-Detector vast in het logboek Systeem, met een bericht dat de programma's noemt die het meeste virtuele geheugen verbruikten. Deze PowerShell-opdracht toont de laatste vijf:
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-Resource-Exhaustion-Detector'; Id=2004} -MaxEvents 5 | Format-List TimeCreated, Message
Meldt de opdracht dat er geen gebeurtenissen zijn gevonden, dan bevat het logboek zo'n gebeurtenis niet.
Hoe groot het moet zijn
Laat het op Door het systeem beheerde grootte staan. De gids voor de grootte zegt dat wisselbestanden standaard door het systeem worden beheerd, en dat de juiste grootte afhangt van je instelling voor crashdumps en je piek in de commit charge, voor elk systeem uniek is en niet te veralgemenen valt. Russinovich noemde de oude formules met een veelvoud van het RAM om dezelfde reden nutteloos.
Een door het systeem beheerd wisselbestand groeit vanzelf. Komt de commit charge boven 90 procent van de limiet, dan groeit het tot drie keer je RAM of 4 GB, afhankelijk van wat groter is, maar niet meer dan een achtste van het volume, en alleen als de schijf de vrije ruimte heeft. Houd wat ruimte vrij op de schijf waarop het staat.
Er is één gedocumenteerde uitzondering. In KB 4055223, vermeld voor Windows 10 en Windows 11, beschrijft Microsoft willekeurige out-of-memory-fouten in programma's die vaak geheugen toewijzen, die kunnen komen door de vertraging terwijl een automatisch wisselbestand groeit. De tijdelijke oplossing is een aangepaste grootte met een begingrootte van 1,5 keer je RAM, verder te verhogen als de fouten aanhouden. Dat botst met de uitspraak hierboven dat de grootte niet te veralgemenen valt, en met Russinovich, dus behandel het als de oplossing voor dat ene symptoom, niet als regel.
Om de instelling te wijzigen, druk je op Win+R en voer je SystemPropertiesAdvanced uit. Kies onder Prestaties de knop Instellingen..., open het tabblad Geavanceerd en kies Wijzigen... onder Virtueel geheugen. Het bovenste selectievakje is Wisselbestandsgrootte automatisch beheren voor alle stations. Daaronder staan per station Aangepaste grootte, Door het systeem beheerde grootte en "No paging file", geen wisselbestand. "Set" past de keuze toe op dat station; selecteer daarna OK en start de pc opnieuw op.
SSD-slijtage
De andere reden die wordt gegeven om het weg te halen, is slijtage van de SSD. Het technische blog van Windows 7 van Microsoft meldde in zijn telemetrie uit 2009 ongeveer 40 keer zoveel leesacties als schrijfacties op het wisselbestand, en concludeerde dat er weinig bestanden zijn die beter op een SSD passen dan het wisselbestand. Dat zijn cijfers uit 2009, dus zie ze als het patroon, niet als de cijfers van vandaag.
Ter vergelijking met een nieuwere schijf: het gegevensblad van de 990 PRO van Samsung uit 2022 geeft het model van 1 TB 600 TB aan geschreven data onder een beperkte garantie van vijf jaar, afhankelijk van wat het eerst wordt bereikt. Gelijkmatig verdeeld is dat ongeveer 330 GB aan schrijfacties per dag, vijf jaar lang; die deling is van ons, niet van Samsung.
Wat niet helpt
- Het uitzetten omdat je genoeg RAM hebt. De limiet ligt dan net onder je RAM, en elke belofte moet daarbinnen passen, gebruikt of niet.
- Een kleine vaste grootte. De limiet is RAM plus het wisselbestand, dus een wisselbestand dat kleiner is dan je piekbehoefte verlaagt het plafond op dezelfde manier, alleen minder.
- Het van de Windows-schijf af halen. Crashdumps hebben een wisselbestand op het opstartvolume nodig, zoals hierboven.
- Tools die geheugen optimaliseren. De prestatiegids van Microsoft zegt dat zogenaamde geheugenoptimalisatoren de kernel dwingen zijn schijfcache te verwijderen en de werksets van processen in te korten, wat veel onnodige schijf-I/O veroorzaakt.
Gerelateerd
- Waarom crasht mijn game?
- Taakbeheer voor gamers
- Te weinig VRAM
- Waarom games stotteren op Windows 11
- SSD of HDD voor games
Heeft deze pagina geholpen?
Wat ontbrak, of wat werkte er niet? We lezen elk van deze berichten.
Heeft deze pagina het niet opgelost, schrijf ons dan — noem het artikel dat je hebt gelezen, dan verbeteren we het.