| tracemem {base} | R Documentation |
This function marks an object so that a message is printed whenever the
internal function duplicate is called. This happens when two
objects share the same memory and one of them is modified. It is a
major cause of hard-to-predict memory use in R.
tracemem(x) untracemem(x) retracemem(x, previous = NULL)
x |
An R object, not a function or environment or NULL. |
previous |
A value as returned by tracemem or retracemem. |
This functionality is optional, determined at compilation, because it
makes R run a little more slowly even when no objects are being
traced. tracemem and untracemem give errors when R is not
compiled with memory profiling; retracemem does not (so it can be
left in code during development).
When an object is traced any copying of the object by the C function
duplicate or by arithmetic or mathematical operations produces a
message to standard output. The message consists of the string
tracemem, the identifying strings for the object being copied and
the new object being created, and a stack trace showing where the
duplication occurred. retracemem() is used to indicate that a
variable should be considered a copy of a previous variable (e.g. after
subscripting).
The messages can be turned off with tracingState.
It is not possible to trace functions, as this would conflict with
trace and it is not useful to trace NULL,
environments, promises, weak references, or external pointer objects, as
these are not duplicated.
A character string for identifying the object in the trace output (an
address in hex enclosed in angle brackets), or NULL (invisibly
for untracemem.
http://developer.r-project.org/memory-profiling.html
## Not run: a <- 1:10 tracemem(a) ## b and a share memory b <- a b[1] <- 1 untracemem(a) ## copying in lm d <- stats::rnorm(10) tracemem(d) lm(d ~ a+log(b)) ## f is not a copy and is not traced f <- d[-1] f+1 ## indicate that f should be traced as a copy of d retracemem(f, retracemem(d)) f+1 ## End(Not run)