Aumentare (o diminuire) la memoria disponibile per i processi R.


Risposte:


64

A partire dal:

http://gking.harvard.edu/zelig/docs/How_do_I2.html ( mirror )

Gli utenti Windows potrebbero ricevere l'errore che R ha esaurito la memoria.

Se R è già installato e successivamente si installa più RAM, potrebbe essere necessario reinstallare R per sfruttare la capacità aggiuntiva.

È inoltre possibile impostare manualmente la quantità di memoria disponibile. Chiudi R, quindi fai clic con il pulsante destro del mouse sull'icona del programma R (l'icona sul desktop o nella directory dei programmi). Seleziona `` Proprietà '', quindi seleziona la scheda `` Collegamento ''. Cerca il campo `` Target '' e dopo le virgolette di chiusura intorno alla posizione dell'eseguibile R, aggiungi

--max-mem-size = 500M

come mostrato nella figura sotto. È possibile aumentare questo valore fino a 2 GB o la quantità massima di RAM fisica installata.

Se ottieni l'errore che R non può allocare un vettore di lunghezza x, chiudi R e aggiungi la seguente riga al campo `` Target '':

--max-vsize = 500M

o come appropriato. Puoi sempre controllare quanta memoria R ha a disposizione digitando al prompt R.

memory.limit()

che ti dà la quantità di memoria disponibile in MB. Nelle precedenti versioni di R avete bisogno di usare: round(memory.limit()/2^20, 2).


7
Tieni presente che su Windows a 32 bit, R può utilizzare solo fino a 3 Gb di RAM, indipendentemente da quanto hai installato. C'è una versione a 64 bit di R per Windows disponibile da REvolution Computing, che gira su Windows a 64 bit e può utilizzare tutta la RAM disponibile: revolution-computing.com/products/revolution-enterprise.php
David Smith

6
Solo due note: (i) memory.limit () funziona solo su Windows e (ii) il comando che restituirà la risposta corretta è round (memory.limit (), 2) - almeno sulla mia versione di R ( 2.8.1).
medriscoll

31
Qualche suggerimento su come ottenere informazioni simili a memory.limit () lavorando su linux?
exl

5
La pagina web non esiste più. È difficile per me seguirlo senza le immagini. Ad esempio, non vedo una scheda "Collegamento". Inoltre, puoi usarlo per diminuire la memoria massima?
Blakeoft

6
Allora, per quanto riguarda gli utenti Mac? Possiamo fare qualcosa al riguardo?
Alfredo Lozano

51

Usa memory.limit(). È possibile aumentare il valore predefinito utilizzando questo comando,, memory.limit(size=2500)dove la dimensione è in MB. È necessario utilizzare 64 bit per trarne vantaggio reale.

Un altro suggerimento è quello di utilizzare oggetti efficienti in termini di memoria ove possibile: ad esempio, utilizzare una matrice invece di un data.frame.


3
Non capisco davvero come funziona. Mi sono imbattuto in questo problema di limite di memoria e ho ricevuto l'errore "Raggiunta l'allocazione totale di 8182 MB". Sto usando 64 bit con 8 GB di RAM, quindi mi sembrava di essere SOL. Tuttavia, per gli shiggles, ho impostato memory.limit (size = 50000) ... E HA FUNZIONATO! Ma perché???
forestale

2
So che ha 7 anni, ma sto cercando di ridurre la quantità di RAM che può essere utilizzata da R ma ogni volta che provo a ridurre il valore ricevo questo messaggio (ho 12 GB di RAM su una macchina Windows a 64 bit) . Messaggio di avviso: In memory.limit (4095): impossibile diminuire il limite di memoria: ignorato
hellter

7

Microsoft Windows accetta qualsiasi richiesta di memoria dai processi, se possibile.

Non esiste alcun limite per la memoria che può essere fornita a un processo, ad eccezione della dimensione della memoria virtuale.

La dimensione della memoria virtuale è di 4 GB nei sistemi a 32 bit per qualsiasi processo, indipendentemente dal numero di applicazioni in esecuzione. Qualsiasi processo può allocare fino a 4 GB di memoria in sistemi a 32 bit.

In pratica, Windows alloca automaticamente alcune parti della memoria allocata dalla RAM o dal file di paging a seconda delle richieste dei processi e del meccanismo del file di paging.

Ma un altro limite è la dimensione del file di paging. Se si dispone di un piccolo file di paging, non è possibile allocare grandi memorie. È possibile aumentare la dimensione del file di paging secondo Microsoft per avere più spazio di memoria.


5
  1. Acquista più ram
  2. Passa a un sistema operativo a 64 bit. Combina con il punto 1.

23
Acquistare più ram (e passare ad un altro sistema operativo) non è una soluzione generalmente appropriata.
om-nom-nom

17
Certo che lo è, proprio come lavorare su problemi più piccoli che sono appropriati per il problema in questione. Desiderare una soluzione di solito non ti procura neanche una.
Dirk Eddelbuettel

2

Per aumentare la quantità di memoria allocata a R puoi usare memory.limit

memory.limit(size = ...)

O

memory.size(max = ...)

Sugli argomenti

  • size - numerico. Se NA segnala il limite di memoria, altrimenti richiedere un nuovo limite, in Mb. Sono consentiti solo valori fino a 4095 nelle build R a 32 bit, ma vedere "Dettagli".
  • max - logico. Se TRUE viene riportata la quantità massima di memoria ottenuta dal sistema operativo, se FALSE la quantità attualmente in uso, se NA il limite di memoria.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.