如果a <- iris
是否a <- 1; gc()
释放以前使用的内存(即用于将虹膜存储为a
的内存)?
我怀疑它可能不会(至少不是很完美)的原因是因为我正在15,000个迭代循环中使用相同的对象名称。尽管每次迭代结束时都调用gc()
,但每次迭代后都会逐渐增加ram使用率。
我不明白为什么会这样
如果有用的话,这里是循环
for (i in starting_index:finishing_index) {
pdf_path <- paste0("../pdfs/", packages[i], ".pdf")
manual_pdf <- pdf_text(pdf_path)
one_manual_pdf <- manual_pdf %>% unlist %>% paste0(., collapse="")
temp <- one_manual_pdf %>% str_split("topics:")
length_temp <- temp[[1]] %>% length
relevant_temp <- temp[[1]] %>% .[(2):(length_temp)] %>% unlist %>% paste0(., collapse="")
relevant_temp <- relevant_temp %>%
strsplit(., "\nstr ",
fixed = TRUE) %>%
.[[1]] %>% .[1]
relevant_temp <- relevant_temp %>% str_remove(., "(\\d+)$")
fns <- relevant_temp %>% strsplit(. , " ") %>% unlist %>% {.[!grepl("\n", .)] } %>%
{ .[!(nchar(.) == 1 | nchar(.) == 0)] } %>% gsub("\n", "", .) %>% gsub("\r", "", .)
pgs <- rep(packages[i], length(fns))
data_for_one <- data.frame(pgs, fns, stringsAsFactors = FALSE)
if(!dir.exists("../output")) { shell("cd .. && mkdir output") }
filename <- paste0("../output/", arguments[1], "pfd.csv")
write.table(data_for_one, filename, append=TRUE, sep=",",
row.names=FALSE, col.names=!file.exists(filename))
gc()
}
答案 0 :(得分:2)
有趣的是,在这种情况下,memory leak that affected the pdftools R library源自poppler,它是R的label = ttk.Label(self, text="Test-1")
label .grid(row=1, stick="w", padx=20)
库的c ++依赖项
答案 1 :(得分:1)
您不需要自己运行Private Sub CommandButton1_Click()
If Ties.OpPlan.Value = True Then
clearties
ElseIf Ties.Prior.Value = True Then
TieToPrevious
ElseIf Ties.Custom.Value = True Then
CustomTie
ElseIf Ties.NetCase.Value = True Then
NetCaseTie
Else
output = MsgBox("You need to pick a case to tie to", vbOKOnly)
End If
Me.Hide
End Sub
。 R在需要空间时会自动运行垃圾回收。
gc()
您想要返回捕获环境的对象(例如公式)时可能会出现内存问题,因为内存将以这种方式保持分配状态。
library(pryr)
a <- iris
object_size(a)
> object_size(a)
7.2 kB
a <- 1
object_size(a)
> object_size(a)
56 B
我看不到您的功能有问题。