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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。