3 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊
“大概?!?我也這樣做,甚至經(jīng)常像
cleanMem <- function(n=10) { for (i in 1:n) gc() }
但是,以我的經(jīng)驗(yàn),這并不能使記憶恢復(fù)到原始狀態(tài)。
因此,我通常要做的是將任務(wù)保留在腳本文件中,并使用“ r”前端(在Unix上和從“ littler”軟件包中)執(zhí)行那些任務(wù)。Rscript是該其他OS上的替代方案。
該工作流程恰好與
統(tǒng)計(jì)分析和報(bào)告編寫(xiě)工作流
在會(huì)話中管理可用內(nèi)存的技巧
我們之前在這里介紹過(guò)。

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
晚會(huì)晚了一點(diǎn),但是:
顯式調(diào)用gc將“現(xiàn)在”釋放一些內(nèi)存。...因此,如果其他進(jìn)程需要內(nèi)存,則可能是個(gè)好主意。例如在致電system或類似電話之前?;蛘?,當(dāng)您“完成”腳本后,R會(huì)閑置一會(huì)兒,直到下一個(gè)作業(yè)到達(dá)為止-再次如此,以便其他進(jìn)程獲得更多的內(nèi)存。
如果您只是想讓腳本運(yùn)行得更快,那沒(méi)關(guān)系,因?yàn)镽會(huì)在需要時(shí)稍后調(diào)用它。由于正常的GC周期可能永遠(yuǎn)都不需要調(diào)用它,因此它甚至可能更慢。
...但是,例如,如果您想測(cè)量時(shí)間,通常最好在運(yùn)行測(cè)試之前進(jìn)行GC。這是system.time默認(rèn)情況下的功能。
更新正如@DWin指出的那樣,R(或C?;騄ava等)并不總是知道何時(shí)內(nèi)存不足以及GC是否需要運(yùn)行。因此,有時(shí)您可能需要執(zhí)行GC來(lái)解決內(nèi)存系統(tǒng)中的缺陷。
- 3 回答
- 0 關(guān)注
- 1760 瀏覽
添加回答
舉報(bào)