(Virtueller Speicher) Windows 7 sagt ständig "Der Arbeitsspeicher ist knapp" und das Schließen von Programmen / Spielabstürzen

967
Noisemaker

Ich habe festgestellt, dass mein PC mit Windows 7 x64 sehr oft sagt, dass der Systemspeicher knapp wird. Dies passiert, wenn ich einige "schwere" Programme gleichzeitig öffne (wie Firefox mit vielen Registerkarten, Fotobearbeitung, CAD usw.).

Ich habe den verwendeten RAM über den Task-Manager noch einmal geprüft, aber er erreicht niemals das Limit. In manchen Fällen schließt das System Programme automatisch.

Heute habe ich versucht, ein recht speicherintensives Spiel zu starten (Black Ops 3), und beim ersten Versuch (bei geöffnetem Firefox) stürzte das Spiel ab. Das Schließen des Firefox-Spiels wird korrekt ausgeführt, stürzt jedoch nach einigen Minuten wieder ab. In beiden Fällen beziehen sich Fehlerfenster auf den Speicher. Sogar in der Spielprotokollkonsole gab es ein "OUT OF MEMORY" oder ähnliches.

Ich habe etwas zu diesem Thema in Bezug auf Paging-Datei gelesen. Ich habe es deaktiviert, weil ich eine 250 GB SSD habe.

Ich hoffe jemand kann mir helfen, weil es sehr frustrierend ist.

Hier einige Hardware- / Systemdetails:

  • CPU: Intel Core i7-930
  • Hauptplatine (MB): ASUS P6X58D PREMIUM (Intel X58 + ICH10R)
  • RAM: 12 GB DDR3-1600 (Triple-Channel), wie folgt aufgeteilt:
    • 3x2GB Corsair CM3X2G1600C8 (CL8) - [Steckplatz: 1-3-5]
    • 3x2GB Corsair CMX6GX3M3A1600C9 (CL9) - [Steckplatz: 2-4-6]
  • Betriebssystem: Windows 7 Professional (x64)

Bearbeiten : Ich werde weitere Informationen hinzufügen, um zu helfen. Ich habe versucht, Fehler zu reproduzieren, aber ich habe teilweise Erfolg. Hier die Ergebnisse und Infos:

Dies ist die Warnung, die ich normalerweise vor dem Fehler bekomme. Es ist ein Web-Image (ich kann es jetzt nicht wiedergeben), aber der Inhalt hat Recht. Normalerweise habe ich Firefox (oder ein anderes des ersten Programms, das ich gestartet habe) als Anwendungsnamen im Warntext. Klicken Sie hier, um das Bild zu sehen. Ich kann sie noch nicht anhängen, da ich hier neu bin.

Dies ist das Black Ops 3-Fehlerprotokoll, wenn ich es mit Firefox starte. In Abhängigkeit vom Absturz des Spiels stürzte auch Firefox ab.

Command line:  Error: Waited 102 msec for missing asset "debug_sphere_exterior". Error: Could not find material "debug_sphere_exterior". Error: Could not find material "debug_sphere_interior". Error: Could not find material "debug_sphere_exterior_nodepth". Error: Could not find material "debug_sphere_interior_nodepth". Error: Could not find material "postfx_dragonstrike". Error: Could not find material "logo". Error: Could not find material "mc/infrared_white". Error: Could not find material "mc/hud_outline_model_green". Error: Could not find material "mc/hud_outline_model_red". Error: Could not find material "mc/hud_outline_model_orange". Error: Could not find material "mc/hud_outline_model_white". Error: Could not find material "mc/hud_outline_model_green_alpha". Error: Could not find material "mc/hud_outline_model_red_alpha". Error: Could not find material "mc/hud_outline_model_orange_alpha". Error: Could not find material "mc/hud_outline_model_white_alpha". Error: Could not find material "mc/hud_outline_model_green_calpha". Error: Could not find material "mc/hud_outline_model_red_calpha". Error: Could not find material "mc/hud_outline_model_orange_calpha". Error: Could not find material "mc/hud_outline_model_white_calpha". Error: Could not find material "mc/hud_outline_model_z_green". Error: Could not find material "mc/hud_outline_model_z_red". Error: Could not find material "mc/hud_outline_model_z_orange". Error: Could not find material "mc/hud_outline_model_z_white". Error: Could not find material "mc/hud_outline_model_z_green_alpha". Error: Could not find material "mc/hud_outline_model_z_red_alpha". Error: Could not find material "mc/hud_outline_model_z_orange_alpha". Error: Could not find material "mc/hud_outline_model_z_white_alpha". Error: Could not find material "mc/hud_outline_model_z_green_calpha". Error: Could not find material "mc/hud_outline_model_z_red_calpha". Error: Could not find material "mc/hud_outline_model_z_orange_calpha". Error: Could not find material "mc/hud_outline_model_z_white_calpha". Error: Could not find material "mc/sonar_weakpoint". Error: Could not find material "mc/hud_outline_model_scriptint". Error: Could not find material "mc/hud_outline_model_alpha_scriptint". Error: Could not find material "mc/hud_outline_model_calpha_scriptint". Error: Could not find material "mc/hud_outline_model_z_scriptint". Error: Could not find material "mc/hud_outline_model_zonly_scriptint". Error: Could not find material "mc/hud_outline_model_z_alpha_scriptint". Error: Could not find material "mc/hud_outline_model_z_calpha_scriptint". Error: Could not find material "mc/sonar_frontend_normal". Error: Could not find material "mc/sonar_frontend_locked_gun". Error: Could not find material "mc/sonar_frontend_token_locked_gun". Error: Could not find material "fontcache". Error: Could not find material "fontcache_distfield". Error: Could not find material "fontcache_glow". Error: Could not find material "fontcache_outline". Error: Could not find material "fontcache_shadow". Error: Could not find material "lui_loader_no_offset". Error: Could not find weapon "killstreak_dogs_cp". Error: Could not find weapon "killstreak_emp_cp". Error: Could not find weapon "weapon_null_mp". Error: Could not find weapon "weapon_null_cp". Error: Could not find fx "_t6/impacts/fx_flesh_hit_neck_fatal". Error: Could not find fx "_t6/misc/fx_ui_flagbase_pmc". Error: Could not find fx "_t6/trail/fx_trail_blood_streak". Error: Could not find fx "_t6/weapon/riotshield/fx_riotshield_depoly_dust". Error: Could not find fx "_t6/weapon/riotshield/fx_riotshield_depoly_lights". Error: Could not find fx "killstreaks/fx_heli_chaff". Error: Could not find fx "lensflares/fx_lensflare_sniper_glint". Error: Could not find fx "player/fx_plyr_clone_reaper_appear". Error: Could not find fx "player/fx_plyr_clone_reaper_orb". Error: Could not find fx "player/fx_plyr_clone_vanish". Error: Could not find fx "player/fx_plyr_flashback_trail_impact". Error: Could not find fx "player/fx_plyr_rejack_light". Error: Could not find fx "player/fx_plyr_revive". Error: Could not find fx "player/fx_plyr_revive_demat". Error: Could not find fx "vehicle/fx_quadtank_airburst". Error: Could not find fx "vehicle/fx_quadtank_airburst_ground". Error: Could not find fx "weapon/fx_betty_light_blue". Error: Could not find fx "weapon/fx_betty_light_orng". Error: Could not find fx "weapon/fx_hero_pineapple_trail_blue". Error: Could not find fx "weapon/fx_hero_pineapple_trail_orng". Error: Could not find fx "zombie/fx_blood_torso_explo_zmb". Error: Could not find fx "animals/fx_bio_direwolf_eyes". Error: Could not find fx "dlc1/castle/fx_mech_dmg_armor". Error: Could not find fx "dlc1/castle/fx_mech_dmg_armor_face". Error: Could not find fx "dlc1/castle/fx_mech_dmg_body_light". Error: Could not find fx "dlc1/castle/fx_mech_dmg_knee_sparks". Error: Could not find fx "dlc1/castle/fx_mech_dmg_sparks". Error: Could not find fx "dlc1/castle/fx_mech_foot_step". Error: Could not find fx "dlc1/castle/fx_mech_foot_step_steam". Error: Could not find fx "dlc1/castle/fx_mech_head_light". Error: Could not find fx "dlc1/castle/fx_mech_light_dmg". Error: Could not find fx "dlc1/castle/fx_mech_wpn_flamethrower". Error: Could not find fx "dlc1/castle/fx_wpn_115_muz". Error: Could not find fx "dlc2/island/fx_spores_cloud_ambient_lrg". Error: Could not find fx "dlc2/island/fx_spores_cloud_ambient_md". Error: Could not find fx "dlc2/island/fx_spores_cloud_ambient_sm". Error: Could not find fx "dlc2/island/fx_thrash_chest_mouth_drool_1p". Error: Could not find fx "dlc2/island/fx_thrash_eye_glow". Error: Could not find fx "dlc2/island/fx_thrash_eye_glow_rage". Error: Could not find fx "dlc2/island/fx_thrash_pustule_burst". Error: Could not find fx "dlc2/island/fx_thrash_pustule_impact". Error: Could not find fx "dlc2/island/fx_thrash_pustule_reinflate". Error: Could not find fx "dlc2/island/fx_thrash_pustule_spore_exp". Error: Could not find fx "dlc2/island/fx_thrash_rage_gas_leg_lft". Error: Could not find fx "dlc2/island/fx_thrash_rage_gas_leg_rgt". Error: Could not find fx "dlc2/island/fx_thrash_rage_gas_torso". Error: Could not find fx "electric/fx_ability_elec_surge_short_robot". Error: Could not find fx "electric/fx_elec_warlord_damage_1". Error: Could not find fx "electric/fx_elec_warlord_damage_2". Error: Could not find fx "electric/fx_elec_warlord_lower_damage_1". Error: Could not find fx "electric/fx_elec_warlord_lower_damage_2". Error: Could not find fx "explosions/fx_exp_robot_stage3_evb". Error: Could not find fx "explosions/fx_exp_warlord_death". Error: Could not find fx "fire/fx_fire_ai_human_arm_left_loop_optim". Error: Could not find fx "fire/fx_fire_ai_human_arm_right_loop_optim". Error: Could not find fx "fire/fx_fire_ai_human_head_loop_optim". Error: Could not find fx "fire/fx_fire_ai_human_hip_left_loop_optim". Error: Could not find fx "fire/fx_fire_ai_human_hip_right_loop_optim". Error: Could not find fx "fire/fx_fire_ai_human_leg_left_loop_optim". Error: Could not find fx "fire/fx_fire_ai_human_leg_right_loop_optim". Error: Could not find fx "fire/fx_fire_ai_human_torso_loop_optim". Error: Could not find fx "light/fx_light_body_glow_warlord". Error: Could not find fx "light/fx_light_eye_glow_warlord". Error: Could not find fx "player/fx_plyr_ability_screen_blur_overdrive". Error: Could not find fx "player/fx_plyr_flashback_trail". Error: Could not find fx "player/fx_plyr_heat_wave_distortion_volume". Error: Could not find fx "player/fx_plyr_heat_wave_distortion_volume_air". Error: Could not find fx "player/fx_plyr_shock_field". Error: Could not find fx "player/fx_plyr_shock_field_1p". Error: Could not find fx "vehicle/fx_exhaust_jetpack_warlord_juke". Error: Could not find fx "zombie/fx_fire_torso_zmb". Error: Could not find fx "zombie/fx_margwa_head_shot_zod_zmb". Error: Could not find fx "zombie/fx_margwa_roar_purple_zod_zmb". Error: Could not find fx "zombie/fx_margwa_roar_zod_zmb". Error: Could not find fx "zombie/fx_margwa_teleport_intro_zod_zmb". Error: Could not find fx "zombie/fx_margwa_teleport_tell_zod_zmb". Error: Could not find fx "zombie/fx_margwa_teleport_travel_zod_zmb". Error: Could not find fx "zombie/fx_margwa_teleport_zod_zmb". Error: Could not find fx "zombie/fx_val_chest_burst". Error: Could not find tagfx "ability_hero_heat_wave_player_impact". Error: Could not find tagfx "gadget_flashback_3p_off". Error: Could not find fx "zombie/fx_val_motes_100x100". Error: Could not find weapon "smg_sten". Error: Could not find weapon "pistol_revolver38". Error: Could not find weapon "launcher_lockon".   Mem_Internal_MapPage failed 
0
Die Nachricht, die Sie erhalten haben, zeigt an, dass Ihre Seitendatei zu klein ist. Der Fehler weist darauf hin, dass der virtuelle Speicher ausgeht und nicht der physische Speicher. Bitte aktualisieren Sie Ihre Fragen und geben Sie spezifische Fehlermeldungen an. Aussagen wie "Sogar in der Spielprotokollkonsole gab es ein" OUT OF MEMORY "oder ähnliches." machen es schwierig, eine Antwort zu übermitteln. Ramhound vor 7 Jahren 2
Werfen Sie einen Blick auf [Optimieren Sie die Auslagerungsdatei in Windows] (http://www.online-tech-tips.com/computer-tips/simple-ways-to-increase-your-computers-performace-configuring-the-paging) -Datei/) yass vor 7 Jahren 1
Ich habe gerade versucht, Fehler zu reproduzieren, und fügte der Hauptfrage weitere Informationen hinzu. Ich kann nicht verstehen, warum ich virtuellen Speicher mit 12 GB RAM verwenden muss. In Abhängigkeit davon weisen alle Webseiten über SSD explizit auf, den virtuellen Speicher zu deaktivieren, um Festplattenverschleiß zu vermeiden. Was soll ich tun? Noisemaker vor 7 Jahren 1
Schalten Sie Ihre Seitendatei wieder ein! Der physische Speicher geht Ihnen nicht aus. Ohne eine Auslagerungsdatei ist die Gesamtbetrag der Commit-Gebühren nicht groß genug, um den gesamten Speicher zu speichern, der von den verwendeten Programmen reserviert wird. Programme fordern ** mehr Speicher an, als sie tatsächlich verwenden **, und wenn Windows nicht garantieren kann, dass alle Anforderungen erfüllt werden können, antwortet es mit "Nicht genügend Speicher". genau das, was mit dir passiert Twisty Impersonator vor 7 Jahren 3
@Noisemaker Können Sie einen Link zu einer solchen Seite setzen, damit wir wissen, dass Sie sie vermeiden, kommentieren und sie sonst für ihre Dummheit verspotten? David Schwartz vor 7 Jahren 2
@Noisemaker, ich empfehle, den virtuellen Speicher auf die Standardeinstellungen zurückzusetzen. Öffnen Sie dann alle Apps und alle Registerkarten, die Sie möglicherweise gleichzeitig geöffnet haben. Windows lernt, wie viel virtueller Speicher verfügbar bleibt, und Sie müssen die Einstellungen nie mehr berühren. Christopher Hostage vor 6 Jahren 0

1 Antwort auf die Frage

4
Jamie Hanrahan

Lassen Sie mich zunächst sagen, dass Sie nicht alleine sind. Dies ist sicherlich die häufigste Frage in den Bereichen "Windows" + "Speicher". Es könnte in allen SuperUser in den Top Ten sein. Und ich beschuldige Microsoft, dass er die Dinge nicht gut erklärt hat, weil er keine guten, konsistenten Namen für Metriken über mehrere Displays hinweg verwendet und trotz dieser "Beliebtheit" keine leicht zu findende Antwort auf diese Frage gibt.

Kurz gesagt, Ihre Verwirrung ist verständlich, sogar erwartet. Es ist nicht deine Schuld.

Die schnelle Antwort

Wenn Sie sehen, „out of memory“, „wenig Speicher“ usw., Pop-ups von Windows Sie wirklich, wirklich, wirklich brauchen eine Auslagerungsdatei haben. Oder vergrößern Sie die Größe, die Sie bereits haben.

(Oder fügen Sie mehr RAM hinzu, aber das ist nicht so einfach. Oder versuchen Sie, weniger oder kleinere Programme gleichzeitig auszuführen, aber das will niemand.)

Ich habe es deaktiviert, weil ich eine 250 GB SSD habe.

Tut mir leid, stumpf zu sein, aber das macht keinen Sinn. Wenn Sie gesagt hätten "... weil ich 64 GB RAM habe", wäre das sinnvoll. Könnte sein. Eine SSD zu besitzen bedeutet jedoch nicht, dass Sie keine Auslagerungsdatei benötigen.

Selbst mit 64 GB RAM kann nicht garantiert werden, dass Sie keine Auslagerungsdatei benötigen!

Diese Fehlermeldung sagt Ihnen tatsächlich, dass Sie unbedingt eine Auslagerungsdatei benötigen. (Oder mehr RAM ... oder Sie müssen gleichzeitig weniger und / oder kleinere Sachen ausführen.)

Ja, ich weiß. Sie möchten keine Auslagerungsdatei auf Ihrer SSD ablegen. Ich werde das am Ende ansprechen.

Wenn es "aus der Erinnerung" sagt, bedeutet das nicht, was Sie denken, es bedeutet

Diese Fehlermeldung wird ausgelöst, wenn das sogenannte "Commit Limit" und nicht der RAM ausgeht. "Committed" oder "Private Committed", um ihm seinen vollen Namen zu geben, ist eine Art virtueller Speicher in Windows. Sie wissen wahrscheinlich, dass sich der Inhalt des "virtuellen Speichers" entweder im RAM befindet oder, falls nicht genügend Platz vorhanden ist, ein Teil davon auf der Festplatte (oder SSD) aufbewahrt wird. Bei "Private Festgeschriebener virtueller Speicher" wird die Seitendatei auf der Festplatte gespeichert. Wenn du eine hast.

(Es gibt auch einen "zugeordneten" virtuellen Speicher, der anstelle der Auslagerungsdatei andere Dateien für das Paging verwendet, und es gibt einen nicht auslagerbaren virtuellen Speicher, der ständig im Arbeitsspeicher verbleiben muss. Nicht-auslagerbare vm trägt zur "Festschreibegebühr" bei, wenn Sie dies tun zu viel davon kann zur Fehlermeldung "out of memory" beitragen. Der zugeordnete Speicher trägt nicht so dazu bei, daher werde ich hier nicht weiter darauf eingehen.)

Was ist, wenn Sie keine Auslagerungsdatei haben? Ihre Programme können weiterhin einen privaten, festgeschriebenen virtuellen Speicher erstellen. Aber dann alle engagierten virtuellen Speicher, die geschrieben worden ist, seit es wurde zum ersten Mal vergeben hat im RAM zu jeder Zeit ... bleiben, bis sie freigegeben ist ( in der Regel durch den Prozess endet, die es erstellt wurde ) ... Denn es gibt keinen anderen Ort für Windows behalte es.

Die „commit limit“ - das heißt, wie viel Engagement, geschrieben zu-at-dest einmal die virtuelle Speicher, die Sie können haben - ist daher einfach die Größe Ihres RAM plus die aktuelle Größe der Auslagerungsdatei. (Wenn Sie die Auslagerungsdateierweiterung aktiviert haben, vergrößert sich das Festschreibungslimit, wenn die Auslagerungsdatei dies tut.)

Wenn Sie den Task-Manager, die Registerkarte Leistung in Windows 7 betrachten, sehen Sie einen Hinweis, der wie folgt aussieht:

Commit (MB) 893 / 4095

Dies bedeutet, dass meine Commit-Gebühr 893 MB beträgt und mein Commit-Limit 4095 MB beträgt, dh 4 GB. (Dies ist von einer virtuellen Maschine, auf der Windows 7 ausgeführt wird. Sie verfügt über 2 GB "RAM" und eine 2 GB-Auslagerungsdatei - das Festschreibungslimit beträgt also 4 GB.)

Die Fehlermeldung "Nicht genügend Arbeitsspeicher" wird angezeigt, wenn ein Programm versucht, den festgeschriebenen virtuellen Speicher zuzuweisen, und die Anforderung kann nicht gewährt werden, da die "Festschreibegebühr" des Systems bereits an oder in der Nähe der "Festschreibungsgrenze" liegt - nahe genug, dass die Anforderung, wenn gewährt, würde nehmen begehen über die Grenze.

Beachten Sie, dass diese Nachricht nur angezeigt wird, nachdem die Anforderung zum Festschreiben bereits ausgeführt wurde und fehlgeschlagen ist. Wenn Sie sich den Task-Manager ansehen, ist der Grund für das Problem möglicherweise nicht ersichtlich.

Angenommen, Sie hatten noch 1 GB Festschreibungslimit und etwas versucht, 1,5 GB in einem Aufruf zuzuweisen. (Dies ist ungewöhnlich, kann jedoch vorkommen.) Der Speichermanager lehnt die Anforderung ab und das Popup wird angezeigt. Wenn Sie sich jedoch den Task-Manager ansehen, wird Ihre Commit-Gebühr immer noch dort angezeigt, wo sie zuvor war. 1 GB ist noch nicht belegt! Verwirrend. Der Task-Manager, der Ressourcenmonitor oder auch der Systemmonitor enthalten keine Informationen darüber, wie viel angefordert wurde.

(Das Process Monitor-Tool von sysinternals.com könnte hier helfen.)

Diese Fehlermeldung sollte eigentlich etwas wie "Versuch der Festschreibung (Umfang der Anforderung) würde das Festschreibungslimit überschreiten" lauten. Dies würde zwar erforderlich sein, um nachzuschauen, was "Festschreibungslimit" bedeutet, aber es wäre viel nützlicher. Nun gut, dies ist bei weitem nicht die einzige nicht-so-hilfreiche-wie-es-Fehlermeldung, die sich in Windows befindet - oder in einem anderen Betriebssystem, das ich jemals verwendet habe. (Sie könnten zumindest mehr Details in das Systemereignisprotokoll aufnehmen!)

Wenn Sie unter Windows über "Speicher" sprechen, sollten Sie dies immer qualifizieren. Sprechen Sie über "virtuellen Speicher" oder "physischen Speicher"? Viele Leute sagen "Gedächtnis", wenn sie es auch meinen könnten. Und viele Leute sagen "RAM", wenn sie wirklich über virtuellen Speicher sprechen. Dies trägt nur zur Verwirrung aller bei.

Wie ich bereits gesagt habe, ist das, was bei der Festschreibungsgebühr gezählt wird, eine Art virtueller Speicher. Das Festschreibungslimit ist die maximale Menge des Typs des virtuellen Speichers, den Sie haben können. Sie können das Commit-Limit erhöhen, indem Sie mehr RAM hinzufügen und / oder die Größe der Auslagerungsdatei erhöhen.

Aber ich habe viel RAM!

Ich kann nicht verstehen, warum ich virtuellen Speicher mit 12 GB RAM verwenden muss.

Das ist eine völlig verständliche Frage. Und sehr häufig. Und wieder beschuldige ich Microsoft, dass er die Dinge nicht besser erklärt.

Kurz gesagt: Sie benötigen eine Auslagerungsdatei, da Ihre Workload versucht, mehr "festgeschriebenen virtuellen Adressraum" zuzuordnen, als Sie über RAM verfügen.

Erstens, Terminologie: Windows verwendet immer virtuellen Speicher, unabhängig davon, ob Sie eine Auslagerungsdatei haben oder nicht. Durch das Entfernen der Auslagerungsdatei wird das Auslagern auf die Festplatte für festgeschriebenen virtuellen Speicher einfach ausgeschlossen . Die festgeschriebene VM ist immer noch vorhanden und ist in jeder Hinsicht immer noch virtuell, außer dass sie auf die Festplatte übertragen werden kann.

Ein anderer wichtiger Typ von virtuellem Speicher, die Sortierung "Mapped Memory", führt die Seite weiter. Nur nicht zur Seitendatei.

Sie fragen sich also: Warum gehen Sie bei einem Arbeitsspeicher von 12 GB das Festschreibungslimit aus?

Nun, das wäre, weil, wie viel Sie bereits verwenden, und die Größe eines Betrags, nach dem ein Programm verlangt, Ihr Commit-Limit überschreitet.

Sie können diese Meldung auch sehen, wenn Sie über ausreichend RAM verfügen, der im Task-Manager angezeigt wird. Umgekehrt sehen Sie die Nachricht möglicherweise nicht - dh ein Commit-Versuch kann erfolgreich sein - auch wenn Sie wenig "verfügbaren" RAM haben. Weil es nicht über verfügbaren RAM beschwert. Es klagt über das Fehlen eines Commit-Limits.

Ihr Programm versucht möglicherweise, große Mengen an reserviertem virtuellem Speicher zuzuweisen. Oder Sie haben etwas anderes ausgeführt, das das Festschreiben verbraucht.

Nun, das ist eine lustige Sache: Wenn ein Prozess einen fest zugewiesenen Speicher zuweist, verwendet dies eigentlich nicht den Arbeitsspeicher in Höhe des festgeschriebenen Betrags. Weil es virtuell ist, erinnerst du dich? Tatsächlich ist für das Festschreiben des virtuellen Speichers sehr wenig RAM erforderlich, auch ohne Auslagerungsdatei. Ich sage nur "Ich möchte vielleicht bis zu" "diesem viel zugesagten virtuellen Speicher verwenden. Windows, können Sie mir (" Commit ") versprechen, dass so viel verfügbar ist, auch wenn ich alles benutze? "

Erst wenn das Programm tatsächlich in den festgeschriebenen Speicher schreibt, indem es darauf zugreift und so zu Seitenfehlern führt, wird der RAM tatsächlich aus dem "available" -Zähler entfernt und zu "in use" hinzugefügt. Dies geschieht seitenweise. Wenn Sie innerhalb des festgeschriebenen Bereichs auf 10 Seiten (jeweils 4 KB) schreiben, werden 10 RAM (40 KB) benötigt.

(Es würde passieren, wenn Sie auch aus ihm lesen, aber es macht wenig Sinn, aus dem neu zugewiesenen virtuellen Speicher zu lesen, bevor Sie in ihn schreiben.)

Sehr oft greift das Programm niemals auf alle von ihm festgeschriebenen privaten VMs zu. In diesem Fall entspricht der verwendete RAM-Speicher nicht dem festgeschriebenen Betrag. (Und bei einem System mit einer Auslagerungsdatei könnten einige der "Festgeschriebenen" Sachen in die Auslagerungsdatei verschoben werden, um mehr Platz im RAM für andere Dinge zu schaffen ... wodurch der von der festgeschriebenen Region verwendete RAM weiter reduziert wird.)

Windows kann jedoch nicht wissen, wie viel von der zugesagten Region verwendet wird. Bei der Allokation bleibt nichts anderes übrig, als davon auszugehen, dass ich möglicherweise alles davon benutze. Dies bedeutet, dass insgesamt 1 GB Speicherplatz erforderlich ist, um den gesamten Speicherplatz zu erhalten (möglicherweise etwas davon in der Auslagerungsdatei und der Rest im Arbeitsspeicher).

Daher kann diese Anforderung nicht erteilt werden, es sei denn, alle aktuellen "Festschreibungszuweisungen" zusammen mit der neuen Zuteilung würden unter dem Festschreibungslimit liegen.

Wenn die Anforderung trotzdem erteilt wurde, besteht die Gefahr, dass der Arbeitsspeicher knapp wird, dh ein Seitenfehler kann nicht behoben werden, da kein Arbeitsspeicher verfügbar war. Das ist ein sehr ernstes Problem. Es ist sowohl für das Betriebssystem als auch für Anwendungsprogrammierer viel einfacher, die Begrenzung durchzusetzen, wenn das Programm versucht, den virtuellen Speicher festzuschreiben.

Für mehr Infos (als ob das nicht schon lange genug wäre)

Weitere Informationen dazu, die auf unterschiedliche Weise erläutert werden, finden Sie in zwei meiner anderen Antworten: Hier wird (länger) eine Analogie zu "Darlehen von der Bank" verwendet, die einige Leute als wirksam befunden haben. Dieses (viel länger) hat eine formalere Erklärung für das, was im Betriebssystem passiert. Wenn Sie ein und dasselbe Konzept auf verschiedene Weise präsentieren, können Sie oft an einem kritischen Punkt vorbeikommen.

Über die Auslagerungsdatei vs. die SSD

Dies ist ein Nebenproblem, also habe ich es hier runter verschoben ...

Alle Webseiten über SSD weisen explizit darauf hin, den virtuellen Speicher zu deaktivieren, um Festplattenverschleiß zu vermeiden

Sorry, aber nein, das sagen nicht alle, und die, die das tun, sind einfach falsch. Moderne SSDs verarbeiten Petabytes von Schreibvorgängen, bevor sie Probleme aufzeigen. Und von Support und Q & A für Solid-State-Laufwerke (MSDN) :

Soll die Auslagerungsdatei auf SSDs abgelegt werden?

Ja. Bei den meisten Seitendatei-Operationen handelt es sich um kleine zufällige Lesevorgänge oder größere sequentielle Schreibvorgänge. Beide Arten von Operationen werden von SSDs gut verarbeitet.

Beim Betrachten von Telemetriedaten aus Tausenden von Spuren und beim Fokussieren auf Lesen und Schreiben von Auslagerungsdateien finden wir das

Pagefile.sys liest outnumber pagefile.sys schreibt etwa 40 zu 1,

Pagefile.sys-Lesegrößen sind normalerweise recht klein, wobei 67% weniger als oder gleich 4 KB und 88% weniger als 16 KB sind.

Pagefile.sys-Schreibvorgänge sind relativ groß, wobei 62% größer oder gleich 128 KB sind und 45% genau 1 MB groß sind.

Angesichts der typischen Referenzmuster für Auslagerungsdateien und der günstigen Leistungseigenschaften, die SSDs für diese Muster aufweisen, gibt es wenige Dateien, die besser sind als die Auslagerungsdatei, die auf einer SSD abgelegt werden kann.

Noch eine überraschende Tatsache: Obwohl Sie möglicherweise eine Auslagerungsdatei benötigen, um dem System die Möglichkeit zu geben, diese Anforderungen zu erteilen, gibt es möglicherweise sehr wenig oder gar nichts, was tatsächlich in die Auslagerungsdatei geschrieben wurde. Dies ist auch deshalb so, weil es normalerweise einen großen Unterschied gibt, wie viel virtueller Speicher belegt wird und wie viel tatsächlich verwendet wird. Mit verwendet meinen wir "geschrieben in und RAM-Seiten entsprechend zugewiesen". Nur private festgeschriebene vm, auf die tatsächlich geschrieben wird, werden jemals in die Auslagerungsdatei geschrieben. Die meisten modernen Systeme (wie Ihres mit 12 GB RAM) schreiben und lesen die Auslagerungsdatei nicht sehr. Trotzdem ist die Auslagerungsdatei häufig notwendig, damit die virtuellen Zuordnungen erfolgreich sind. Und vielleicht beruhigt das Ihre Entscheidung, es auf Ihre SSD zu legen.

Sehr gut beantwortet Für das OP kann es hilfreich sein, expliziter über die Tatsache zu sein, dass die Programme ** mehr ** virtuellen Speicher anfordern, als sie notwendigerweise benötigen. Jemand, der sich ein System mit 12 GB RAM ansieht, von dem 6 GB "verfügbar" sind, wird möglicherweise nicht wissen (oder versteht, warum) laufende Programme insgesamt 11 GB festgeschriebenen virtuellen Speicher zugewiesen haben. Twisty Impersonator vor 7 Jahren 0
Ich dachte, ich wäre explizit, aber ich werde darüber nachdenken, wie ich das unterstreichen könnte. Vielleicht mit einer Demo. Jamie Hanrahan vor 7 Jahren 0
Eine Demo würde diese bereits großartige Antwort noch besser machen. Dieses Thema ist selbst für erfahrene Windows-Benutzer verwirrend. Twisty Impersonator vor 7 Jahren 0
AFAIK-Commit muss nicht geschrieben werden ("geändert"), um zu zählen; Schon der Akt des Anforderns von festgeschriebenem Speicher reicht aus. Und ich stimme dem Bit "Wenn Sie nicht 64 GB haben" nicht zu - egal wie viel Sie haben, es ist ineffizient, RAM nur für Commit-but-not-modified zu reservieren, wenn er besser als Festplattencache verwendet wird. Nun, meistens, aber wenn Sie wirklich besondere Anforderungen haben, dann wissen Sie es schon. Ansonsten wie immer eine tolle Antwort. Bob vor 7 Jahren 1
@ Bob Re "geschrieben", ja, das war eine "verwirrte" Bearbeitung. Es muss darauf zugegriffen werden, um den tatsächlichen Speicherplatz zu nutzen, aber nicht für die Überweisungsgebühr. Die "64 GB" war nur eine Beispielnummer für das, was viele als "genug empfinden, um keine Auslagerungsdatei zu haben". Auch ++ erlaubt mehr RAM für den Festplatten-Cache. Alles fixiert, denke ich. Vielen Dank! Jamie Hanrahan vor 7 Jahren 0