tracemem
位于 base
包(package)。 说明
此函数标记一个对象,以便每当内部代码复制该对象时都会打印一条消息。这是 R 中 hard-to-predict 内存使用的主要原因。
用法
tracemem(x)
untracemem(x)
retracemem(x, previous = NULL)
参数
x |
一个 R 对象,而不是函数或环境或 |
previous |
|
细节
此函数是可选的,在编译时确定,因为即使没有跟踪任何对象,它也会使 R 运行得更慢。当 R 未使用内存分析进行编译时,tracemem
和 untracemem
会出现错误; retracemem
没有(因此可以在开发过程中将其保留在代码中)。
它在 CRAN macOS 和 Windows 版本中启用R.
当跟踪对象时,C 函数 duplicate
对该对象的任何复制都会向标准输出生成一条消息,就像将参数传递给 .C
或 .Fortran
时进行类型强制和复制一样。
该消息由字符串 tracemem
、正在复制的对象和正在创建的新对象的标识字符串以及显示重复发生位置的堆栈跟踪组成。 retracemem()
用于指示变量应被视为前一个变量的副本(例如,在下标之后)。
可以使用 tracingState
关闭消息。
无法跟踪函数,因为这会与 trace
冲突,并且跟踪 NULL
、环境、承诺、弱引用或外部指针对象没有用,因为这些不重复。
这些函数是primitive。
值
用于标识跟踪输出中的对象的字符串(用尖括号括起来的十六进制地址),或NULL
(不可见)。
例子
## Not run:
a <- 1:10
tracemem(a)
## b and a share memory
b <- a
b[1] <- 1
untracemem(a)
## copying in lm: less than R <= 2.15.0
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)
也可以看看
capabilities("profmem")
查看此版本是否启用了此函数R.
相关用法
- R traceback 获取并打印调用堆栈
- R trace 函数或方法调用的交互式跟踪和调试
- R transform 转换对象,例如 DataFrame
- R try 尝试允许错误恢复的表达式
- R trimws 删除前导/尾随空格
- R taskCallback 添加或删除顶级任务回调
- R toString 将 R 对象转换为字符串或测试字符串
- R tilde 波形符运算符
- R textConnection 文本连接
- R t 矩阵转置
- R table 交叉表和表格创建
- R tempfile 为临时文件创建名称
- R taskCallbackManager 创建R级任务回调管理器
- R typeof 对象的类型
- R taskCallbackNames 查询当前内部顶级任务回调名称
- R timezones 时区
- R tabulate 向量列表
- R tapply 对不规则数组应用函数
- R file.path 构造文件路径
- R grep 模式匹配和替换
- R getwd 获取或设置工作目录
- R vector 向量 - 创建、强制等
- R lapply 对列表或向量应用函数
- R dump R 对象的文本表示
- R Sys.getenv 获取环境变量
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Trace Copying of Objects。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。