Memory {base}R Documentation

Memory Available for Data Storage


Use command line options to control the memory available for R.


Rgui --min-vsize=vl --max-vsize=vu --min-nsize=nl --max-nsize=nu
Rterm --min-vsize=vl --max-vsize=vu --min-nsize=nl --max-nsize=nu

mem.limits(nsize = NA, vsize = NA)


vl, vu, vsize Heap memory in bytes.
nl, nu, nsize Number of cons cells.


R has a variable-sized workspace (from version 1.2.0). There is now much less need to set memory options than previously, and most users will never need to set these. They are provided both as a way to control the overall memory usage (which can also be done using the option --max-mem-size on Windows), and since setting larger values of the minima will make R slightly more efficient on large tasks.

(On Windows the --max-mem-size option sets the maximum memory allocation: it has a minimum allowed value of 16M. This is intended to catch attempts to allocate excessive amounts of memory which may cause other processes to run out of resources. The default is the smaller of the amount of physical RAM in the machine and 1024Mb. See also memory.limit.)

To understand the options, one needs to know that R maintains separate areas for fixed and variable sized objects. The first of these is allocated as an array of “cons cells” (Lisp programmers will know what they are, others may think of them as the building blocks of the language itself, parse trees, etc.), and the second are thrown on a “heap” of “Vcells” of 8 bytes each. Effectively, the input v is rounded up to the nearest multiple of 8.

Each cons cell occupies 28 bytes on a 32-bit machine, (usually) 56 bytes on a 64-bit machine.

The --*-nsize options can be used to specify the number of cons cells and the --*-vsize options specify the size of the vector heap in bytes. Both options must be integers or integers followed by G, M, K, or k meaning Giga (2^{30} = 1073741824) Mega (2^{20} = 1048576), (computer) Kilo (2^{10} = 1024), or regular kilo (1000).

The --min-* options set the minimal sizes for the number of cons cells and for the vector heap. These values are also the initial values, but thereafter R will grow or shrink the areas depending on usage, but never exceeding the limits set by the --max-* options nor decreasing below the initial values.

The default values are currently minima of 350k cons cells, 6Mb of vector heap and no maxima (other than machine resources). The maxima can be changed during an R session by calling mem.limits. (If this is called with the default values, it reports the current settings.)

You can find out the current memory consumption (the heap and cons cells used as numbers and megabytes) by typing gc() at the R prompt. Note that following gcinfo(TRUE), automatic garbage collection always prints memory use statistics. Maxima will never be reduced below the current values for triggering garbage collection, and attempts to do so will be silently ignored.

When using read.table, the memory requirements are in fact higher than anticipated, because the file is first read in as one long string which is then split again. Use scan if possible in case you run out of memory when reading in a large table.


mem.limits() returns an integer vector giving the current settings of the maxima, possibly NA.


For backwards compatibility, options --nsize and --vsize are equivalent to --min-nsize and --min-vsize.

When using the Rgui console it is simplest to make a shortcut and put these command-line flags at the end of the Target field.

See Also

Memory-limits for the design limitations.

gc for information on the garbage collector and total memory usage, object.size(a) for the (approximate) size of R object a. memory.profile for profiling the usage of cons cells.

memory.size to monitor total memory usage, memory.limit for the current limit.


# Start R with 10MB of heap memory and 500k cons cells, limit to
# 100Mb and 1M cells
## Not run: 
## Unix
R --min-vsize=10M --max-vsize=100M --min-nsize=500k --max-nsize=1M
## End(Not run)

[Package base version 2.1.0 Index]