Translate

2017년 6월 26일 월요일

R에서 메모리 관리하기



 요즘은 컴퓨터의 메모리가 증가해서 메모리를 일일이 관리해줄 필요가 없는 경우가 대부분이지만, 가끔씩 R에서 메모리를 관리할 경우가 생깁니다. 앞서 소개드린것처럼 R은 모든 데이터를 메모리에 상주시키는데, 이런 저런 작업을 하다보면 메모리에서 차지하는 용량이 너무 커지거나 혹은 데이터가 지저분하게 쌓이는 문제가 발생할 수 있습니다. 


 R에서 메모리의 사이즈 확인과 지우기는 매우 단순합니다. 일단 1에서 10000000, 1에서 20000000인 데이터를 생성한 후 메모리에서 차지하는 용량을 확인해 보겠습니다. 


> a<-c span="">
> b<-c span="">
> memory.size()
[1] 221.43

 메모리 사이즈가 221.43MB로 확인됩니다. 그런데 정확히 말하면 이는 R이 전체 메모리에서 차지하는 비중으로 각각의 메모리 용량은 아닙니다. 각각의 메모리 용량을 확인하는 방법은 그냥 R 스튜디오에서 Environment 탭에서 확인할 수 있습니다. 



 글자가 좀 작지만 (클릭하면 커집니다) 각각 38.1Mb와 76.3Mb 인 것을 알 수 있습니다. 지우는 건 더 간단합니다. Environment 창에서 빗자루 아이콘을 클릭하면 지워집니다. 


 아니면 rm(list=ls())라는 명령어로 지울 수 있습니다. 

 현재 R에서 사용할 수 있는 메모리는 memory.limit()로 확인이 가능합니다. 

> memory.limit()
[1] 16351

 제가 쓰는 컴퓨터는 메모리가 16GB 이므로 메모리가 16GB로 표시됩니다. 물론 이는 64비트 버전 R을 사용하고 있기 때문입니다. 32비트 버전은 2GB 정도 나올 것입니다. 


 마지막으로 가상 메모리를 더 잡아서 메모리 사이즈를 약간 더 늘려보겠습니다. 이 방법은 메모리 용량이 부족할 때 사용할 수 있는데 32비트에서도 한계보다 좀 더 큰 메모리를 사용할 수 있게 도와주나 요즘은 그냥 64비트 사용을 권장합니다. 


 > memory.limit(18000)
[1] 18000
> memory.limit()
[1] 18000

 가상 메모리를 이용해서 18GB로 사용량을 늘렸습니다. 다만 가상 메모리는 속도가 느리므로 무작정 늘리는 것이 좋은 게 아닙니다. 가능하면 메모리 자체를 늘리는 것이 속도면에서 유리합니다. 물론 이정도 큰 데이터를 다루는 경우는 많지 않을 것이고 만약 다룬다면 여러 개의 CPU와 큰 메모리를 지닌 서버에서 다루지 않으면 너무 느려서 사용하기 힘들 것입니다. 참고로 R을 종료하면 가상 메모리는 다시 초기화됩니다. 

댓글 없음:

댓글 쓰기