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
).gc(verbose = getOption("verbose"), reset = FALSE)
gcinfo(verbose)
TRUE
, the garbage collection prints
statistics about cons cells and the space allocated for vectors.TRUE
the values for maximum space used
are reset to the current values.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 Rstarted).
gcinfo
returns the previous value of the flag.
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. However, it can be useful to call gc
after a large object
has been removed, as this may prompt Rto return memory to the
operating system.
Rallocates space for vectors in multiples of 8 bytes: hence the
report of "Vcells"
, a relict 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
Memory
on R's memory management,
and gctorture
if you are an Rdeveloper.
reg.finalizer
for actions to happen at garbage
collection.
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)
Run the code above in your browser using DataLab