object.size {utils} | R Documentation

## Report the Space Allocated for an Object

### Description

Provides an estimate of the memory that is being used to store an R object.

### Usage

    object.size(x)

    ## S3 method for class 'object_size'
    format(x, units = "b", ...)
    ## S3 method for class 'object_size'
    print(x, quote = FALSE, units = "b", ...)

### Arguments

`x` | an R object.
`quote` | logical, indicating whether or not the result should be printed with surrounding quotes.
`units` | the units to be used in printing the size. Allowed values are `"b"`, `"Kb"`, `"Mb"`, `"Gb"`, `"Tb"`, `"Pb"`, `"B"`, `"KB"`, `"MB"`, `"GB"`, `"TB"`, `"PB"`, `"KiB"`, `"MiB"`, `"GiB"`, `"TiB"`, `"PiB"`, `"EiB"`, `"ZiB"`, `"YiB"`, and `"auto"` (see ‘Details’). Can be abbreviated.
`...` | arguments to be passed to or from other methods.

### Details

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 `EXTPTRSXP` points to) is not included in the calculation.

Object sizes are larger on 64-bit builds than 32-bit ones, but will very likely be the same on different platforms with the same word length and pointer size.

`units = "auto"` in the `format` and `print` methods chooses the largest units in which the result is one or more (before rounding). Values in kilobytes, megabytes or gigabytes are rounded to the nearest `0.1`.

The IEC standard for binary byte size units uses notation `KiB`, etc. Note that our uses of `Kb`, `Mb`, etc, also mean multiples of `1024` (and not of `1000`) and hence the numbers for `Kb`, `KB`, and `KiB` are all the same - contrary to SI standard but according to widespread tradition.

### Value

An object of class `"object_size"` with a length-one double value, an estimate of the memory allocation attributable to the object in bytes.

### See Also

`Memory-limits` for the design limitations on object size.

### Examples

    object.size(letters)
    object.size(ls)
    format(object.size(library), units = "auto")

    sl <- object.size(rep(letters, 1000))
    (fsl <- sapply(c("Kb", "KB", "KiB"),
                   function(u) format(sl, units = u)))
    stopifnot(identical( ## assert that all three are the same :
                 unique(substr(as.vector(fsl), 1,5)),
                 format(round(as.vector(sl)/1024, 1))))

    ## 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])

[Package utils version 3.3.2 Index]