Memory-limits {base} | R Documentation |
R holds objects it is using in memory. This help file documents the current design limitations on large objects: these differ between 32-bit and 64-bit builds of R.
R holds all objects in memory, and there are limits based on the amount of memory that can be used by all objects:
Memory
– but these are
usually not imposed.
cannot allocate vector of size
indicate a failure to obtain memory, either because the size exceeded
the address-space limit for a process or, more likely, because the
system was unable to provide the memory. Note that on a 32-bit OS
there may well be enough free memory available, but not a large enough
contiguous block of address space into which to map it.
There are also limits on individual objects. On all versions of R,
the maximum length (number of elements) of a vector is
2^31 - 1 ~ 2*10^9, as
lengths are stored as signed integers. In addition, the storage space
cannot exceed the address limit, and if you try to exceed that limit,
the error message begins cannot allocate vector of length
.
The number of characters in a character string is in theory only
limited by the address space.
The address-space limit is system-specific: 32-bit OSes imposes a limit of no more than 4Gb: it is often 3Gb or less. Running 32-bit executables on a 64-bit OS will have the similar limits: 64-bit executables will have an essentially infinite system-specific limit.
See the OS/shell's help on commands such as limit
or
ulimit
for how to impose limitations on the resources available
to a single process. For example a bash
user could use
ulimit -t 600 -m 2000000whereas a
csh
user might use
limit cputime 10m limit memoryuse 2048mto limit a process to 10 minutes of CPU time and (around) 2GB of memory.
The address space limit is 2Gb under 32-bit Windows unless the OS's default has been changed to allow more (up to 3Gb). See http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx and http://msdn.microsoft.com/en-us/library/bb613473%28VS.85%29.aspx. Under most 64-bit versions of Windows the limit is 4Gb: for some older ones it is 2Gb.
Under Windows, R imposes limits on the total memory allocation
available to a single session as the OS provides no way to do so: see
memory.size
and memory.limit
.
object.size(a)
for the (approximate) size of R object
a
.