\HeaderA{object.size}{Report the Space Allocated for an Object}{object.size}
\aliasA{print.object\_size}{object.size}{print.object.Rul.size}
\keyword{utilities}{object.size}
\begin{Description}\relax
Provides an estimate of the memory that is being used to store an \R{} object.
\end{Description}
\begin{Usage}
\begin{verbatim}
object.size(x)

## S3 method for class 'object_size':
print(x, quote = FALSE,
      units = c("b", "auto", "Kb", "Mb", "Gb"), ...)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] An \R{} object.
\item[\code{quote}] logical, indicating whether or not the result should be
printed with surrounding quotes.
\item[\code{units}] The units to be used in printing the size.
\item[\code{...}] Arguments to be passed to or from other methods.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
Exactly which parts of the memory allocation should be attributed to
which object is not clear-cut.  This function merely provides a rough
indication: it should be reasonably accurate for atomic vectors, but
does not detect if elements of a list are shared, for example.
(Sharing amongst elements of a character vector is taken into account,
but not that between character vectors in a single object.)

The calculation is of the size of the object, and excludes the space
needed to store its name in the symbol table.

Associated space (e.g. the environment of a function and what the
pointer in a \code{EXTPTRSXP} points to) is not included in the
calculation.

Object sizes are larger on 64-bit platforms than 32-bit ones, but will
very likely be the same on different platforms with the same word
length and pointer size.
\end{Details}
\begin{Value}
An object of class \code{"object.size"} with a length-one double value,
an estimate of the memory allocation attributable to the object in bytes.
\end{Value}
\begin{SeeAlso}\relax
\code{\LinkA{Memory-limits}{Memory.Rdash.limits}} for the design limitations on object size.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
object.size(letters)
object.size(ls)
print(object.size(library), units = "auto")
## find the 10 largest objects in the base package
z <- sapply(ls("package:base"), function(x)
            object.size(get(x, envir = baseenv())))
as.matrix(rev(sort(z))[1:10])
\end{ExampleCode}
\end{Examples}

