Rev 30771 | Rev 42333 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{Memory-limits}\alias{Memory-limits}\concept{memory}\concept{limits}\title{Memory Limits in R}\description{\R holds objects it is using in memory. This help file documents thecurrent design limitations on large objects: these differ between32-bit and 64-bit builds of \R.}\details{\R holds all objects in memory, and there are limits based on theamount of memory that can be used by all objects:\itemize{\item There may be limits on the size of the heap and the number ofcons cells allowed -- see \code{\link{Memory}} -- but these areusually not imposed.#ifdef unix\item There is a limit on the address space of a single process suchas the \R executable. This is system-specific, but for 32-bit OSesimposes a limit of no more than 4Gb. It is often 3Gb or less.\item The environment may impose limitations on the resourcesavailable to a single process -- see the OS/shell's help on commands suchas \code{limit} or \code{ulimit}.#endif#ifdef windows\item There is a limit on the address space of a single process suchas the \R executable. This is 2Gb under 32-bit Windows unless both the OSand the \R executable have been changed to allow more (up to 3Gb?).See the \file{rw-FAQ} for how to do so.\item Under Windows, \R does impose limits on the total memoryallocation available to a single run, as the OS provides no way todo so. See \code{\link{memory.size}} and \code{\link{memory.limit}}.#endif}Error messages beginning \code{cannot allocate vector of size}indicate a failure to obtain memory, either because the size exceededthe address-space limit for a process or, more likely, because thesystem was unable to provide the memory.There are also limits on individual objects. On all versions of \R,the maximum length (number of elements) of a vector is\eqn{2^{31} - 1 \approx 2\thinspace 10^9}{2^31 - 1 ~ 2*10^9}, aslengths are stored as signed integers. In addition, the storage spacecannot exceed the address limit, and if you try to exceed that limit,the error message begins \code{cannot allocate vector of length}.The number of characters in a character string is in theory onlylimited by the address space.}\seealso{\code{\link{object.size}(a)} for the (approximate) size of \R object\code{a}.}\keyword{environment}