gpt4 book ai didi

r - 分配给相同的名称(例如在循环中)是否会释放 R 中先前使用的内存?

转载 作者:行者123 更新时间:2023-12-01 23:10:57 25 4
gpt4 key购买 nike

如果a <- irisa <- 1; gc()释放以前使用的内存(即用于将 iris 存储为 a 的内存)?

我怀疑它可能不会(至少不完美)的原因是因为我在 15,000 次迭代循环中使用相同的对象名称。尽管gc(),但每次迭代后内存使用量都会非常缓慢地增加在每次迭代结束时调用。

我不明白为什么会发生这种情况

如果它有用,这里是循环

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()

}

最佳答案

有趣的是,在本例中,memory leak that affected the pdftools R library源于 poppler ,R 的 pdftools 库的 C++ 依赖项

关于r - 分配给相同的名称(例如在循环中)是否会释放 R 中先前使用的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56708006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com