[R] calculating memory usage

Adaikalavan Ramasamy ramasamy at cancer.org.uk
Tue Sep 14 16:00:59 CEST 2004

Many thanks to Prof. Ripley. The problem is that memory.profile does not
exist in *nix environment and there is probably a very good reason why.

I was reading help(Memory) and in the Details section :
     You can find out the current memory consumption (the heap and cons
     cells used as numbers and megabytes) by typing 'gc()' at the R

AFAICS, Ncells is the fixed memory used by the underlying R and Vcells
is the variable part and depends on the calculations. 

Would I be able to say that the generating 10 million random numbers
requires approximately 73.4 Mb (= 26.3 + 80.5 - 26.3 - 7.1) of memory ?
I double checked this against memory.size() in Windows and they seem to
agree. Thank you.

> gc()
         used (Mb) gc trigger (Mb)
Ncells 456262 12.2     984024 26.3
Vcells 122697  1.0     929195  7.1
> x <- rnorm(10000000)
> gc()
           used (Mb) gc trigger (Mb)
Ncells   456274 12.2     984024 26.3
Vcells 10123014 77.3   10538396 80.5

On Mon, 2004-09-13 at 18:47, Prof Brian Ripley wrote:
> On Mon, 13 Sep 2004, Adaikalavan Ramasamy wrote:
> > I am comparing two different algorithms in terms of speed and memory
> > usage. I can calculate the processing time with proc.time() as follows
> > but am not sure how to calculate the memory usage.
> > 
> >    ptm <- proc.time()
> >    x <- rnorm(1000000)
> >    proc.time() - ptm
> Hmm ... see ?system.time!
> > I would like to be within R itself since I will test the algorithm
> > several hundred times and in batch mode. So manually looking up 'top'
> > may not be feasible. help.seach("memory") suggests memory.profile and gc
> > but I am not sure how to use these.
> I don't think you can.  You can find out how much memory R is using NOW, 
> but not the peak memory usage during a calculation.  Nor is that 
> particularly relevant, as it depends on what was gone on before, the word 
> length of the platform and the garbage collection settings.
> On Windows, starting in a clean session, calling gc() and memory.size(), 
> then calling your code and memory.size(max=TRUE) will give you a fair 
> idea, but `top' indicates some Unix-alike.

More information about the R-help mailing list