亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用gc()命令強制垃圾收集在R中運行

使用gc()命令強制垃圾收集在R中運行

ibeautiful 2019-12-20 10:13:59
我定期草率地編程。好的,我一直都在草率地編寫程序,但有時會以內存不足錯誤的形式趕上我。我開始練習一些紀律,用rm()命令刪除對象,情況會變得更好。我在網上看到有關gc()在刪除大數據對象后是否應顯式調用的混合消息。有人說R返回內存錯誤之前它將運行,gc()而另一些人則說手動強制gc是一個好主意。gc()為了確保最大的內存可用性,是否應該在刪除大對象之后運行?
查看完整描述

3 回答

?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

“大概。” 我也這樣做,甚至經常像


cleanMem <- function(n=10) { for (i in 1:n) gc() }

但是,以我的經驗,這并不能使記憶恢復到原始狀態。


因此,我通常要做的是將任務保留在腳本文件中,并使用“ r”前端(在Unix上和從“ littler”軟件包中)執行那些任務。Rscript是該其他OS上的替代方案。


該工作流程恰好與


統計分析和報告編寫工作流

在會話中管理可用內存的技巧

我們之前在這里介紹過。


查看完整回答
反對 回復 2019-12-20
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

晚會晚了一點,但是:


顯式調用gc將“現在”釋放一些內存。...因此,如果其他進程需要內存,則可能是個好主意。例如在致電system或類似電話之前?;蛘?,當您“完成”腳本后,R會閑置一會兒,直到下一個作業到達為止-再次如此,以便其他進程獲得更多的內存。


如果您只是想讓腳本運行得更快,那沒關系,因為R會在需要時稍后調用它。由于正常的GC周期可能永遠都不需要調用它,因此它甚至可能更慢。


...但是,例如,如果您想測量時間,通常最好在運行測試之前進行GC。這是system.time默認情況下的功能。


更新正如@DWin指出的那樣,R(或C?;騄ava等)并不總是知道何時內存不足以及GC是否需要運行。因此,有時您可能需要執行GC來解決內存系統中的缺陷。


查看完整回答
反對 回復 2019-12-20
  • 3 回答
  • 0 關注
  • 1762 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號