Problem jest dość stary jednak ciągle aktualny…bardzo często występuje w modach… N Soljanka, DMX…poniższe rozwiązania występują również w problemach technicznych nowego moda SGM 2.1
Błędy związane z pamięcią RAM…
Pojawiają się gdy Menager Pamięci OS WINDOWS nie daje rady wydzielić odpowiedniej ilości pamięci w przydzielonej dla procesu puli stronicowania. Po uruchomieniu, proces (program) otrzymuje od systemu operacyjnego jedną lub więcej pul dostępnej pamięci możliwej do dowolnego wykorzystania. W zależności od przyjętej konstrukcji obszar nazywany jest stertą, lub stosem. W trakcie działania program może zażądać od systemu operacyjnego większej ilości pamięci, lub też zwolnić niepotrzebny obszar.
Wypad «Not enough storage is available to process this command» ,..po naszemu znaczy to «Brak wystarczającej ilości zasobów dla wykonania tego polecenia».
Aby pokonać problem, należy:
1. Zwiększyć wielkość dostępnej puli pamięci przydzielonej dla danego procesu.
- Zmniejszyć poziom zapełnienia puli, od którego Menager pamięci zacznie obcinać pamięć.
Przepełnienie stosu ( jest to jeden z rodzajów przepełnienia bufora) - występuje, gdy rozmiar stosu przekroczy ilość pamięci zarezerwowanej dla niego. Maksymalny rozmiar stosu jest zwykle ograniczony, ustalany na początku działania programu i zależy od języka programowania, komputera i ilości dostępnej pamięci, najczęściej jest rzędu 1 MB. Skutkiem przepełnienia stosu, gdy nie przygotowano programu na tę okoliczność jest nagłe przerwanie jego działania. W praktyce widzimy to jako wylot z błędem opisanym ..brak wystarczających zasobów itd.
Dla rozwiązania problemu zalecamy:
(idź do «Start >«Uruchom…»)
Uruchom REGEDIT (Edytor rejestru).
Idź do adresu: HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet ControlSession Manager Memory Management
a…Ustaw maksymalny rozmiar puli na 4 GB.
“PagedPoolSize”=dword:ffffffff
Ustawienie wartości PagedPoolSize równej 0xFFFFFFFF powoduje przydzielenie komputerowi maksymalnej puli stronicowania zamiast innych zasobów.
b…Ustaw odcinanie przydziału pamięci przy zapełnieniu puli na 40 %. (Domyślnie jest 80%). Poniżej dodaj nową wartość …
“PoolUsageMaximum”=dword:00000028
Ustawienie wartości X informuje Menedżer pamięci, że ma rozpoczynać proces obcinania przydziału pamięci po osiągnięciu X % wartości PagedPoolMax. Wielkość 80% jest ustawieniem domyślnym. Jeśli próg 60% nie wystarcza do obsługi nagłych wzrostów aktywności, zmniejsz to ustawienie do 50% lub 40%
Restart systemu. Problem powinien zniknąć.
Wniosek..Widzimy tutaj jak ważna jest ilość uruchomionych procesów w tle i jak wpływają one na dostępność pamięci RAM podczas pracy systemu.
Wypad «Out of Memory . Memory request: …… K».
Za mało pamięci. Zapytanie o pamięć: ….
Tu najważniejsze jest zrozumieć, że 32-bitowy Windows wydziela dla każdego procesu (a uruchomienie Stalkera to też proces) tylko 2 GB pamięci. I ani bajta więcej, nawet jeśli masz w komputerze włożone 8 GB RAM.
Natomiast 64-bitowy Windows wydziela dla każdego procesu tyle pamięci, «ile procesowi potrzebne».
Są dwa sposoby rozwiązania problemu:
1. Jeśli masz w komputerze tylko 2 GB RAM.
Obniż nastawienia renderowania grafiki aż do statycznego. Zmniejsz gęstość trawy, jakość cieni i t.d. aż do minimum. Jeśli nie pomoże, wyłączaj wszystkie nastawienia gry (udźwiekowienie, atmosferę, muzykę, anomalie, miny i t.d. Jeśli i to nie pomaga, to pozostaje iść do sklepu i dokupić pamięci RAM.
2. Masz w komputerze 4 GB pamięci RAM lub więcej.
a) Zainstaluj 64-bitowy Windows.
b) «Zmuś» 32-bitowy Windows do przyznania każdemu procesowi nie 2, а 3 GB pamięci, kosztem zmniejszenia pamięci jądra( samego systemu, sterowników i t.d.).
Radzę uruchomić Menedżer zadań, przejść do zakładki «Wydajność» i spojrzeć na «Pamięć» . Jeśli jest mniej niż 1 GB, to zaczynamy działać. ( Jeśli więcej – usuń z pamięci wszystkie poboczne procesy oprócz jądra systemu oraz sterowników wideo i audio).
Oto przykładowy log wypadu…
[win32]: free[65320 K], reserved[98608 K], committed[1933160 K]
* [ D3D ]: textures[687435 K]
* [x-ray]: crt heap[454760 K], process heap[9774 K], game lua[60032 K], render[5882 K]
* [x-ray]: economy: strings[54097 K], smem[11933 K]
FATAL ERROR
[error]Expression : fatal error
[error]Function : out_of_memory_handler
[error]File : D:prog_repositorysourcestrunkxrCorexrDebugNew.cpp
[error]Line : 336
[error]Description :
[error]Arguments : Out of memory. Memory request: 3629 K
[win32]: free[65320 K], reserved[98608 K], committed[1933160 K]
Tutaj widać że…[ win32]: free[65320 K] – wolna pamięć 65,32МB, a pod proces już jest zajęte - committed[1933160 K]- 1,93 GB. Czyli wolnej pamięci praktycznie nie ma, bo jak pamiętamy proces dostał sztywno tylko 2 GB. Rozwiązujemy problem:
Windows XP 32 bit…
-
Na dysku systemowym znajdujemy i otwieramy w notatniku plik boot.ini. Plik jest systemowy, więc będzie ukryty, dlatego trzeba we własnościach plików właczyć pokazywanie plików systemowych.
-
Robimy kopię boot.ini: otwieramy plik boot.ini, wybieramy “Zapisz jako”, nazwa pliku boot.ini.bak.
-
W oknie systemowym (idź do «Menu Start»->«Uruchom…» albo nacisnij Win+R) uruchom polecenie:
bootcfg /raw “/3GB /userva=2500” /A /ID 1
gdzie «1» - to numer konfiguracji w pliku boot.ini. Domyslnie jest tylko jedna konfiguracja.
Jesli jesteś doświadczonym uzytkownikiem, to możesz dodać parametry “/3GB /userva=2500”
bezpośrednio do pliku boot.ini przy pomocy edytora tekstu.
- Po dodaniu nastawień trzeba koniecznie zresetować komputer.
Jeśli będą problemy z uruchomieniem systemu, trzeba wejść w tryb bezpiecznego uruchomienia i przywrócić
ustawienia z kopii bezpieczeństwa, po prostu zmienić nazwę pliku boot.ini.bak na boot.ini
Windows Vista/Seven 32bit…
- Uruchamiamy okno poleceń (cmd.exe) z uprawnieniami administratora (prawym przyciskiem myszy na skrócie/uruchomienie z prawami admina). W oknie które się pojawi:
bcdedit /export “C:BCDBackup”
nacisnąć “enter”
bcdedit /set IncreaseUserVa 2500
nacisnąć “enter”.
-
Zresetować komputer.
-
Uruchomić grę.
Jeśli system się nie uruchomił, trzeba wejść w tryb bezpiecznego uruchamiania i wypełnić pierwszy punkt wpisując w linii poleceń :
bcdedit /import “C:BCDBackup”
A oto log po wykonaniu opisanych wyżej operacji przy wyjściu z gry:
* [win32]: free[1197900 K], reserved[85456 K], committed[1862308 K]
Pod proces zajęte (committed[1862308 K]) 1,86 GB i jeszcze jest wolne 1,197GB.
Wszystko napisane powyżej ma charakter porad, a to znaczy, że nie jestem w stanie zajrzeć do komputera każdego użytkownika.