2015-12-14 33 views
5

Gdy R jest uruchamiane, limit pamięci (zwrócony przez memory.limit) jest ustawiony na 2 GB, niezależnie od dostępnej pamięci w komputerze. (I found that out recently). Wyobrażam sobie, że w pewnym momencie procesu uruchamiania ten limit jest ustawiony na faktycznie dostępną pamięć.Jak zastąpić limit pamięci 2 GB, gdy R uruchamia się

Można to zobaczyć, drukując memory.limit() w pliku .Rprofile, który jest pobierany podczas uruchamiania. Wyświetla "2047". Z drugiej strony, gdy R uruchomi się, a ja wpisuję w konsoli memory.limit(), otrzymuję "16289".

Używam niestandardowego pliku .Rprofile i podczas uruchamiania muszę mieć dostęp do ponad 2 GB.

W jaki sposób można zmienić ten limit?

Moje bieżące obejście polega na ustaleniu limitu w profilu .Rp przy użyciu memory.limit(size=16289), ale będę musiał edytować to za każdym razem, gdy pracuję na komputerze z inną ilością pamięci RAM, co zdarza się dość często.

Czy istnieje opcja, którą mogę zmienić, plik .ini, który mogę edytować, czy cokolwiek co mogę z tym zrobić?

OS i R wersja:

> sessionInfo() 
R version 3.2.2 (2015-08-14) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 

Edit: to nie duplikat, przynajmniej nie duplikat proponowanego pytanie. Nie chodzi o zarządzanie dostępną pamięcią! Mam 16 GB pamięci, a memory.limit() pokazuje, że mój limit to 16 GB.

Wszystko zaczęło się, gdy otrzymałem ostrzeżenie, że "osiągnąłem 2 GB alokacji pamięci" (co sugeruje, że mam limit 2GB pamięci). Po przeprowadzeniu dochodzenia okazuje się, że indeed R limits the memory at 2GB during the startup process.

Chcę załadować moje dane automatycznie po uruchomieniu R, do tego mam mały skrypt ładujący w .Rprofile. Ładuję więcej niż 2 GB danych, dlatego muszę mieć dostęp do mojego 16 GB. Moje pytanie dotyczy tego. Ma to w ogóle nic w wspólnego z proponowanym dwóch egzemplarzach, z wyjątkiem słów kluczowych ...

+1

Która wersja R i system operacyjny są używane? –

+2

@Vova Nie duplikat, kwestia jest zupełnie inna IMO. Mam wystarczająco dużo pamięci i nie wykonuję żadnej głodnej operacji pamięci. Mój problem polega na tym, że limit pamięci jest ustawiony na 2 GB, gdy R uruchamia się. –

+0

Muszę powiedzieć, że jestem zaskoczony liczbą głosów "bliskich" ... Tak zwane zduplikowane pytanie dotyczy tego, że ktoś osiąga limit pamięci na swoim komputerze. "Rozwiązaniem" jest zoptymalizowanie kodu tak, aby był mniej pamięci. ---- Moim problemem jest to, że podczas uruchamiania R, limit pamięci jest ustawiony sztucznie na niskim poziomie, co uniemożliwia mi ładowanie więcej niż 2GB danych automatycznie z pliku.Plik Rprofile. Absurdem jest odsyłać mnie do drugiego postu: mogę załadować dane po uruchomieniu R, ponieważ mam wystarczająco dużo pamięci. Moje pytanie dotyczy limitu pamięci 2 GB podczas uruchamiania, jest to zupełnie inne. –

Odpowiedz

1

mam interpretowania tego, jak chce memory.limit(size=16289) w pliku .RProfile, ale nie chcesz, aby ustawić określoną liczbę każdego czas zmienić komputery z inną pamięcią. Dlaczego po prostu dynamicznie przyciągać pamięć, której potrzebujesz? W oknach:

TOT_MEM <- as.numeric(gsub("\r","",gsub("TotalVisibleMemorySize=","",system('wmic OS get TotalVisibleMemorySize /Value',intern=TRUE)[3])))/1024 
memory.limit(size=TOT_MEM) 

które ustawić ilość dostępnej pamięci do całkowitej pamięci systemu lub

FREE_MEM <- as.numeric(gsub("\r","",gsub("FreePhysicalMemory=","",system('wmic OS get FreePhysicalMemory /Value',intern=TRUE)[3])))/1024 
memory.limit(size=FREE_MEM) 

które ustawione memory.limit do całkowitej dostępnej pamięci na bagażniku.

Umieść to w RProfile, powyżej miejsca wczytywania danych.

+0

Dzięki za wywołanie systemowe! Będzie to wymagało pewnej adaptacji, ponieważ używam Windowsa i Linuksa zamiennie ... Myślę, że mogę przetestować odpowiednio system operacyjny i gałąź. Ciągle myślę, że musi istnieć jakiś plik .ini, w którym mógłbym określić, jaki powinien być limit pamięci podczas uruchamiania. –

+0

(Teraz, gdy o tym myślę, nawet nie sprawdziłem, czy problem pojawia się również w Linuksie) –