[Dúvida] Limpando memória RAM

Pessoal eu tenho duas base de dados de 600 MB totalizando 1200 MB e carro ela no R mas não necessito da base toda carregada na memória RAM. As variáveis que me interessam eu jogo em um vetor e com o comando rm() eu removo os dois data.frames. Esse comando retira os objetos completamente da memória RAM ou deixa lixo? Existe uma forma mais eficiente? -- Saudações, Pedro Rafael Diniz Marinho - Estatístico SES-PB Currículo Lattes: http://buscatextual.cnpq.br/buscatextual/visualizacv.jsp?id=K4250792T6

remova o objeto com o rm e após execute gc(reset = TRUE) 2011/4/16 Pedro Rafael <pedro.rafael.marinho@gmail.com>:
Pessoal eu tenho duas base de dados de 600 MB totalizando 1200 MB e carro ela no R mas não necessito da base toda carregada na memória RAM. As variáveis que me interessam eu jogo em um vetor e com o comando rm() eu removo os dois data.frames. Esse comando retira os objetos completamente da memória RAM ou deixa lixo? Existe uma forma mais eficiente?
-- Saudações, Pedro Rafael Diniz Marinho - Estatístico SES-PB Currículo Lattes: http://buscatextual.cnpq.br/buscatextual/visualizacv.jsp?id=K4250792T6
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
-- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O

On Sat, Apr 16, 2011 at 03:03:49PM -0300, Henrique Dallazuanna wrote:
remova o objeto com o rm e após execute gc(reset = TRUE)
Eu não conhecia a opção reset da função gc(), mas num teste que fiz aqui ela não parece ter feito muita diferença. Carreguei o banco de dados do World Values Survey com read.dta (o arquivo está disponível em três formatos, sendo um deles o do STATA). O comando top do Linux mostrou que o R estava ocupando em torno de 2,7 GB da RAM. Depois dos comandos rm(list=ls()) gc(reset = TRUE) a memória ocupada continuou um pouco acima de 1 GB. Existe alguma forma mais eficiente do que gc() de mandar o R reorganizar (desfragmentar?) a memória? Atualmente, tenho feito o seguinte em situações em que preciso dessa reorganização da memória: 1) Salvo a área de trabalho: save.image() 2) Fecho o R: quit(save = no) 3) Abro o R novamente e carrego a área de trabalho salva. [É claro que poderia ter usado quit(save = "yes"), mas prefiro escolher um nome para o RData.] -- Jakson

On Sat, 2011-04-16 at 14:57 -0300, Pedro Rafael wrote:
Pessoal eu tenho duas base de dados de 600 MB totalizando 1200 MB e carro ela no R mas não necessito da base toda carregada na memória RAM. As variáveis que me interessam eu jogo em um vetor e com o comando rm() eu removo os dois data.frames. Esse comando retira os objetos completamente da memória RAM ou deixa lixo? Existe uma forma mais eficiente?
Pedro, Depende do caso Por exemplo se as bases forem em csv você pode usar o a opção colClasses e nem carregar os que não te interessa... -- []s Tura

No caso de dados em DBF existe uma forma de não carregar a base de dados todas apenas as colunas que desejar? Em 16 de abril de 2011 18:31, Bernardo Rangel Tura [via R-br] < ml-node+3454654-1229685952-223914@n4.nabble.com> escreveu:
On Sat, 2011-04-16 at 14:57 -0300, Pedro Rafael wrote:
Pessoal eu tenho duas base de dados de 600 MB totalizando 1200 MB e carro ela no R mas não necessito da base toda carregada na memória RAM. As variáveis que me interessam eu jogo em um vetor e com o comando rm() eu removo os dois data.frames. Esse comando retira os objetos completamente da memória RAM ou deixa lixo? Existe uma forma mais eficiente?
Pedro, Depende do caso Por exemplo se as bases forem em csv você pode usar o a opção colClasses e nem carregar os que não te interessa...
-- []s Tura
_______________________________________________ R-br mailing list [hidden email]<http://user/SendEmail.jtp?type=node&node=3454654&i=0&by-user=t> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
------------------------------ If you reply to this email, your message will be added to the discussion below:
http://r-br.2285057.n4.nabble.com/R-br-Duvida-Limpando-memoria-RAM-tp3454341... To unsubscribe from R-br, click here<http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3357982&code=cGVkcm8ucmFmYWVsLm1hcmluaG9AZ21haWwuY29tfDMzNTc5ODJ8NTAyMjI0MDYw>.
-- Saudações, Pedro Rafael Diniz Marinho - Estatístico SES-PB Currículo Lattes: http://buscatextual.cnpq.br/buscatextual/visualizacv.jsp?id=K4250792T6

On Sat, 2011-04-16 at 19:15 -0300, Pedro Rafael wrote:
No caso de dados em DBF existe uma forma de não carregar a base de dados todas apenas as colunas que desejar?
Pedro, Direto não há como selecionar colunas do DBF. Possiveis soluções: 1- leia em DBF cada um dos arquivos salve em csv só as colunas que te interessa e crie um novo arquivo 2- Importe para um banco MySQL e utilize o RMySql 3- Pode tentar algo com IDBC ou JDBC -- []s Tura

ou SQLite.... 2011/4/17 Bernardo Rangel Tura <tura@centroin.com.br>:
On Sat, 2011-04-16 at 19:15 -0300, Pedro Rafael wrote:
No caso de dados em DBF existe uma forma de não carregar a base de dados todas apenas as colunas que desejar?
Pedro,
Direto não há como selecionar colunas do DBF. Possiveis soluções:
1- leia em DBF cada um dos arquivos salve em csv só as colunas que te interessa e crie um novo arquivo
2- Importe para um banco MySQL e utilize o RMySql
3- Pode tentar algo com IDBC ou JDBC
-- []s Tura
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
-- Successful people ask better questions, and as a result, they get better answers. (Tony Robbins)

Se for windows, dá pra ler dbf via RODBC e usar comandos sql igual qq sql comum Não sei se tem algum conector java pra DBF, mas se houver, dá pra fazer o mesmo em qq SO usando RJDBC On 16/04/2011, at 22:31, Bernardo Rangel Tura wrote:
On Sat, 2011-04-16 at 19:15 -0300, Pedro Rafael wrote:
No caso de dados em DBF existe uma forma de não carregar a base de dados todas apenas as colunas que desejar?
Pedro,
Direto não há como selecionar colunas do DBF. Possiveis soluções:
1- leia em DBF cada um dos arquivos salve em csv só as colunas que te interessa e crie um novo arquivo
2- Importe para um banco MySQL e utilize o RMySql
3- Pode tentar algo com IDBC ou JDBC
-- []s Tura
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Se for no Linux, depois de dar o rm, vc pode executar esse comando no terminal, como root, sync; echo 3 > /proc/sys/vm/drop_caches confira o antes e depois com free -m []s, --- Fernando Mayer URL: http://sites.google.com/site/fernandomayer e-mail: fernandomayer [@] gmail.com 2011/4/17 Leonard Assis <assis.leonard@gmail.com>:
Se for windows, dá pra ler dbf via RODBC e usar comandos sql igual qq sql comum
Não sei se tem algum conector java pra DBF, mas se houver, dá pra fazer o mesmo em qq SO usando RJDBC
On 16/04/2011, at 22:31, Bernardo Rangel Tura wrote:
On Sat, 2011-04-16 at 19:15 -0300, Pedro Rafael wrote:
No caso de dados em DBF existe uma forma de não carregar a base de dados todas apenas as colunas que desejar?
Pedro,
Direto não há como selecionar colunas do DBF. Possiveis soluções:
1- leia em DBF cada um dos arquivos salve em csv só as colunas que te interessa e crie um novo arquivo
2- Importe para um banco MySQL e utilize o RMySql
3- Pode tentar algo com IDBC ou JDBC
-- []s Tura
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

2011/4/18 Fernando Mayer <fernandomayer@gmail.com>:
Se for no Linux, depois de dar o rm, vc pode executar esse comando no terminal, como root,
sync; echo 3 > /proc/sys/vm/drop_caches
confira o antes e depois com
Eu uso o top no terminal, digitando a letra R para que os aplicativos sejam ordenados pelo tanto de memória que estão usando. Fiz o procedimento, mas não houve nenhuma alteração na memória ocupada pelo R. A memória geral é liberada imediatamente, mas o Linux faria isso automaticamente logo que algum aplicativo requisitasse memória. O problema é com o R mesmo. A impressão que tenho (sem ter olhado o código fonte) é que o R aloca grandes blocos de memória e joga os objetos dentro. Depois, ele só libera um bloco se não houver mais nada dentro dele. Por isso, às vezes criamos um objeto e a memória ocupada não aumenta nada e às vezes removemos um objeto e a memória não é liberada como seria esperado. O que me fez pensar isso foi a observação do comportamento do R e a leitura desse texto (de um não especialista): http://www.matthewckeller.com/html/memory.html -- Jakson

On Sat, 2011-04-16 at 14:57 -0300, Pedro Rafael wrote:
Pessoal eu tenho duas base de dados de 600 MB totalizando 1200 MB e carro ela no R mas não necessito da base toda carregada na memória RAM. As variáveis que me interessam eu jogo em um vetor e com o comando rm() eu removo os dois data.frames. Esse comando retira os objetos completamente da memória RAM ou deixa lixo? Existe uma forma mais eficiente?
Pedro, me lembrei de mais uma coisa você pode utilizar uma opções no R que aumentam a memoriá para ele rodar R --min-vsize=valor --min-nsize=valor -- []s Tura
participantes (7)
-
Benilton Carvalho
-
Bernardo Rangel Tura
-
Fernando Mayer
-
Henrique Dallazuanna
-
Jakson A. Aquino
-
Leonard Assis
-
Pedro Rafael