2015-12-14 7 views
5

Wenn R bootet, wird das Speicherlimit (wie von memory.limit zurückgegeben) auf 2 GB festgelegt, unabhängig vom verfügbaren Arbeitsspeicher des Computers. (I found that out recently). Ich stelle mir vor, dass dieses Limit irgendwann beim Booten auf den tatsächlich verfügbaren Speicher gesetzt wird.So überschreiben Sie die 2GB-Speichergrenze, wenn R startet

Dies kann durch Drucken memory.limit() in der .Rprofile-Datei gesehen werden, die beim Start bezogen wird. Es druckt "2047". Auf der anderen Seite, wenn R gebootet hat und ich memory.limit() in der Konsole tippe, bekomme ich "16289".

Ich benutze eine benutzerdefinierte .Rprofile Datei und ich muss Zugriff auf mehr als 2 GB während des Bootens haben.

Wie kann dieses Limit überschrieben werden?

Meine aktuelle Problemumgehung ist, das Limit selbst in der .Rprofile mit memory.limit(size=16289) zu setzen, aber dann muss ich dies jedes Mal bearbeiten, wenn ich auf einem Computer mit einer anderen Menge an RAM arbeite, die ziemlich oft passiert.

Gibt es eine Option, die ich ändern kann, eine .ini-Datei, die ich bearbeiten kann, oder was kann ich dagegen tun?

OS und R-Version:

> 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: das ist kein Duplikat, zumindest kein Duplikat der vorgeschlagenen Frage. Es geht nicht darum, den verfügbaren Speicher zu verwalten! Ich habe 16GB Speicher und memory.limit() zeigt, dass mein Limit in der Tat 16GB ist.

Alles begann, als ich die Warnung erhielt, dass ich "2GB Speicherzuweisung" erreicht hatte (was bedeutet, dass ich eine Speichergrenze von 2 GB hatte). Nach der Untersuchung scheint es, dass indeed R limits the memory at 2GB during the startup process.

Ich möchte meine Daten automatisch laden, wenn R startet, dafür habe ich ein kleines Ladeskript in der .Rprofile. Ich lade mehr als 2GB Daten, also muss ich Zugang zu meinen 16GB haben. Meine Frage ist, dies zu erreichen. Dies hat gar nichts gemeinsam mit der vorgeschlagenen doppelten, mit Ausnahme Keywords ...

+1

Welche R-Version und welches Betriebssystem verwenden? –

+2

@Vova Nicht ein Duplikat, das Problem ist völlig anders IMO. Ich habe genug Speicher und ich mache keine speicherhungrige Operation. Mein Problem ist, dass das Speicherlimit auf 2 GB eingestellt ist, wenn R bootet. –

+0

Ich muss sagen, dass ich über die Anzahl der "nahen" Stimmen überrascht bin ... Bei der sogenannten doppelten Frage geht es darum, dass jemand das Speicherlimit auf seinem PC erreicht. Die "Lösung" besteht darin, den Code so zu optimieren, dass weniger Speicher zur Verfügung steht. ---- Mein Problem ist, dass während des Starts von R das Speicherlimit künstlich niedrig eingestellt ist, was mich daran hindert, mehr als 2GB Daten automatisch von der Festplatte zu laden.Rprofile-Datei. Es ist absurd, mich auf den anderen Beitrag zu verweisen: ICH KANN die Daten laden, sobald R gestartet ist, weil ich genug Speicher habe. Meine Frage betrifft das Speicherlimit von 2GB beim Start, das ist völlig anders. –

Antwort

1

Ich Interpretation dieses, wie Sie memory.limit(size=16289) in Ihrer .RProfile Datei zu wollen, aber Sie wollen nicht auf die spezifische Nummer einzustellen jeden Zeit wechseln Sie Computer mit unterschiedlichem Speicher. Warum ziehen Sie nicht einfach den benötigten Speicher dynamisch? In den Fenstern:

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

, die den verfügbaren Speicher auf den Gesamtspeicher des Systems, oder

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

die memory.limit auf den gesamten verfügbaren Speicher würde eingestellt auf Boot gesetzt würde.

Platzieren Sie dies in RProfile, wo Sie Ihre Daten laden.

+0

Danke für den Systemaufruf! Es wird jedoch etwas Anpassung erfordern, da ich Windows und Linux synonym verwende ... Ich denke, ich kann für das OS testen und entsprechend verzweigen. Ich denke, dass es eine Art von INI-Datei geben muss, wo ich angeben könnte, was das Speicherlimit beim Start sein sollte. –

+0

(Jetzt, da ich darüber nachdenke, habe ich nicht einmal überprüft, ob das Problem auch unter Linux auftritt) –

Verwandte Themen