R: Garbage Collection

gc {base} | R Documentation

## Garbage Collection

### Description

A call of `gc` causes a garbage collection to take place. `gcinfo` sets a flag so that automatic collection is either silent (`verbose = FALSE`) or prints memory usage statistics (`verbose = TRUE`).

### Usage

    gc(verbose = getOption("verbose"), reset = FALSE, full = TRUE)
    gcinfo(verbose)

### Arguments

`verbose` | logical; if `TRUE`, the garbage collection prints statistics about cons cells and the space allocated for vectors.
`reset` | logical; if `TRUE` the values for maximum space used are reset to the current values.
`full` | logical; if `TRUE` a full collection is performed; otherwise only more recently allocated objects may be collected.

### Details

A call of `gc` causes a garbage collection to take place. This will also take place automatically without user intervention, and the primary purpose of calling `gc` is for the report on memory usage. For an accurate report `full = TRUE` should be used.

It can be useful to call `gc` after a large object has been removed, as this may prompt R to return memory to the operating system.

R allocates space for vectors in multiples of 8 bytes: hence the report of `"Vcells"`, a relic of an earlier allocator (that used a vector heap).

When `gcinfo(TRUE)` is in force, messages are sent to the message connection at each garbage collection of the form

        Garbage collection 12 = 10+0+2 (level 0) ...
        6.4 Mbytes of cons cells used (58%)
        2.0 Mbytes of vectors used (32%)

Here the last two lines give the current memory usage rounded up to the next 0.1Mb and as a percentage of the current trigger value. The first line gives a breakdown of the number of garbage collections at various levels (for an explanation see the ‘R Internals’ manual).

### Value

`gc` returns a matrix with rows `"Ncells"` (cons cells), usually 28 bytes each on 32-bit systems and 56 bytes on 64-bit systems, and `"Vcells"` (vector cells, 8 bytes each), and columns `"used"` and `"gc trigger"`, each also interpreted in megabytes (rounded up to the next 0.1Mb).

If maxima have been set for either `"Ncells"` or `"Vcells"`, a fifth column is printed giving the current limits in Mb (with `NA` denoting no limit).

The final two columns show the maximum space used since the last call to `gc(reset = TRUE)` (or since R started).

`gcinfo` returns the previous value of the flag.

### See Also

The ‘R Internals’ manual.

`Memory` on R's memory management, and `gctorture` if you are an R developer.

`reg.finalizer` for actions to happen at garbage collection.

### Examples

    gc() #- do it now
    gcinfo(TRUE) #-- in the future, show when R does it
    x <- integer(100000); for(i in 1:18) x <- c(x, i)
    gcinfo(verbose = FALSE) #-- don't show it anymore

    gc(TRUE)

    gc(reset = TRUE)

[Package base version 4.0.5 Index]