2014-10-31 2 views
12

Sto facendo apprendimento automatico su larga scala, ma dopo il mio calcolo è diventato così lento a causa dell'occupazione della memoria R.
Mi sono schiarito l'oggetti e anche io provato gc() e il risultato:memoria chiara allocata dalla sessione R (gc() non aiuta!)

  used (Mb) gc trigger (Mb) max used (Mb) 
Ncells 4460452 231.5 15288838 1116.6 36599071 1954.7 
Vcells 29572776 349.4 324509788 2712.9 350796378 3376.4 

mio task manager mostra sessione R ancora stanziato oltre 3 GB di memoria e il computer è ancora lento.
Come posso liberare la memoria acquisita da R? (Non voglio riavviare il PC)

+0

Non è l'allocazione di memoria gestita dal sistema operativo stesso? –

+0

@Pascal, No R richiede la memoria richiesta e dovrebbe rilasciarlo dopo l'uso. ma non per alcuni rituali non so! – Cina

+1

Hai chiuso o riavviato la sessione R? – Roland

risposta

10

la soluzione migliore che ho trovato è il riavvio della sessione R. in R Studio ctr+shft+f10

e se non volete salvare spazio di lavoro

makeActiveBinding("refresh", function() { system(paste0(R.home(),"/bin/i386/R")); q("no") }, .GlobalEnv) 

paste0(R.home(),"/bin/i386/R --no-save") #--save will save workspace 

applausi.

+1

Questa sembra essere l'unica opzione anche per me. È piuttosto fastidioso! – RobertMc

1

Come in questa risposta - https://stackoverflow.com/a/8813862/2602477 - "gc non cancella nessuna variabile che stai ancora utilizzando, ma libera solo la memoria per quelle a cui non hai più accesso" .

Si potrebbe rimuovere (quasi) tutto nell'ambiente di lavoro utilizzando rm funzione:

rm(list = ls()) 

Si noti che se si desidera rimuovere gli oggetti nascosti così è necessario utilizzare

rm(list = ls(all.names = TRUE)) 
+1

già provato. nessun grande cambiamento – Cina

3

è necessario seguire due passaggi. In primo luogo, eseguire rm(list = ls()) Tuttavia, anche se esso rimuove tutti gli oggetti in ls(), è necessario riavviare R utilizzando .rs.restartR()

Questo effettivamente cancellare completamente la memoria.