Aumentando (ou diminuindo) a memória disponível para os processos R

123

Gostaria de aumentar (ou diminuir) a quantidade de memória disponível para R. Quais são os métodos para conseguir isso?

medriscoll
fonte

Respostas:

64

De:

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

Os usuários do Windows podem receber o erro que o R ficou sem memória.

Se você já possui o R instalado e posteriormente instala mais RAM, pode ser necessário reinstalar o R ​​para aproveitar a capacidade adicional.

Você também pode definir a quantidade de memória disponível manualmente. Feche R e clique com o botão direito do mouse no ícone do programa R (o ícone na área de trabalho ou no diretório de programas). Selecione `` Propriedades '' e selecione a guia `` Atalho ''. Procure o campo `` Target '' e, após as aspas finais ao redor do local do executável R, adicione

--max-mem-size = 500M

conforme mostrado na figura abaixo. Você pode aumentar esse valor em até 2 GB ou a quantidade máxima de RAM física instalada.

Se você receber o erro de que R não pode alocar um vetor de comprimento x, feche R e adicione a seguinte linha ao campo `` Destino '':

--max-vsize = 500M

ou conforme apropriado. Você sempre pode verificar a quantidade de memória que R tem disponível, digitando no prompt R

memory.limit()

que fornece a quantidade de memória disponível em MB. Nas versões anteriores do R você precisava usar: round(memory.limit()/2^20, 2).

BobbyShaftoe
fonte
7
Observe que no Windows de 32 bits, o R pode usar apenas até 3Gb de RAM, independentemente de quanto você instalou. Existe uma versão de 64 bits do R for Windows disponível no REvolution Computing, que roda em Windows de 64 bits e pode usar toda a RAM disponível: revolution-computing.com/products/revolution-enterprise.php
David Smith,
6
Apenas duas notas: (i) memory.limit () funciona apenas no Windows e (ii) o comando que retornará a resposta correta é redondo (memory.limit (), 2) - pelo menos na minha versão do R ( 2.8.1)
medriscoll 8/09/09
31
Alguma sugestão sobre como obter informações semelhantes a memory.limit () trabalhando no linux?
exl
5
A página da web não existe mais. É difícil para mim acompanhar isso sem as imagens. Não vejo uma guia "Atalho", por exemplo. Além disso, você pode usar isso para diminuir a memória máxima?
blakeoft
6
Então, e os usuários de mac? Podemos fazer algo sobre isso?
Alfredo Lozano
51

Use memory.limit(). Você pode aumentar o padrão usando este comando memory.limit(size=2500), em que o tamanho está em MB. Você precisa usar 64 bits para tirar proveito real disso.

Uma outra sugestão é usar objetos com eficiência de memória sempre que possível: por exemplo, use uma matriz em vez de um data.frame.

Shane
fonte
3
Eu realmente não entendo como isso funciona. Corri para esse problema de limite de memória e recebi o erro "Atingiu a alocação total de 8182Mb". Estou usando 64 bits com 8 GB de RAM, então parecia SOL. No entanto, para shiggles, configurei memory.limit (size = 50000) ... E FUNCIONOU! Mas por que???
Theforestecologist
2
Sei que tem 7 anos, mas estou tentando reduzir a quantidade de RAM que pode ser usada pelo R, mas sempre que tento reduzir o valor, recebo esta mensagem (tenho 12 GB de RAM em uma máquina Windows de 64 bits) . Mensagem de aviso: Em memory.limit (4095): não pode diminuir o limite de memória: ignorado
hellter
7

O Microsoft Windows aceita qualquer solicitação de memória dos processos, se possível.

Não há limite para a memória que pode ser fornecida a um processo, exceto o Tamanho da Memória Virtual.

O tamanho da memória virtual é de 4 GB em sistemas de 32 bits para qualquer processo, não importa quantos aplicativos você esteja executando. Qualquer processo pode alocar até 4 GB de memória em sistemas de 32 bits.

Na prática, o Windows aloca automaticamente algumas partes da memória alocada da RAM ou do arquivo de paginação, dependendo das solicitações de processos e do mecanismo do arquivo de paginação.

Mas outro limite é o tamanho do arquivo de paginação. Se você tiver um pequeno arquivo de paginação, não poderá alocar grandes memórias. Você pode aumentar o tamanho do arquivo de paginação de acordo com a Microsoft para ter mais espaço de memória.

Isaac
fonte
5
  1. Compre mais ram
  2. Alterne para um sistema operacional de 64 bits. Combine com o ponto 1.
Dirk Eddelbuettel
fonte
23
Compre mais memória RAM (e mude para outro sistema operacional) não é a solução apropriada geral.
Om-nom-nom
17
Claro que é, assim como trabalhar em problemas menores que são apropriados para o problema em questão. Desejar uma solução geralmente também não lhe dá uma.
precisa saber é o seguinte
2

Para aumentar a quantidade de memória alocada para R, você pode usar memory.limit

memory.limit(size = ...)

Ou

memory.size(max = ...)

Sobre os argumentos

  • tamanho - numérico. Se NA reportar o limite de memória, solicite um novo limite, em Mb. Somente valores de até 4095 são permitidos em construções R de 32 bits, mas consulte 'Detalhes'.
  • max - lógico. Se TRUE, a quantidade máxima de memória obtida no sistema operacional for relatada, se FALSE a quantidade atualmente em uso, se NA o limite de memória.
Tiago Martins Peres
fonte