# This takes ~60 seconds and uses ~500mb of RAM, which is then unavailable for other processes
library(pdftools)
for (i in 1:5) {
print(i)
pdf_text("https://cran.r-project.org/web/packages/spatstat/spatstat.pdf")
}
没有释放RAM。每次运行该函数时,它将使用更多的RAM,并且直到R会话终止后才释放它。我在窗户上。
pdf_text()
gc()
为什么要使用这么多的内存,如何释放它? (无需终止R会话)
我在循环内尝试过pdf_text()
我已检查ls(all=TRUE)
是否未创建某些隐藏对象(通过检查pdf_text
我有cleared the R session's temp files
尽管在上面的示例中,特定pdf的大小约为5mb,但在其上调用ng generate module
则需要大约20倍的内存!我不确定为什么
答案 0 :(得分:1)
这听起来像是内存泄漏。但是,我无法在MacOS上重现此问题。
我有started an issue对此进行跟踪,能否请您报告您正在使用哪个版本的pdftools和libpoppler来显示此行为?
答案 1 :(得分:0)
对于通过google到达这里的任何人,这都是为我解决问题的方法-它建立在耶隆的建议here
之上pdf_urls <- c("https://cran.r-project.org/web/packages/ggplot2/ggplot2.pdf",
"https://cran.r-project.org/web/packages/dplyr/dplyr.pdf",
"https://cran.r-project.org/web/packages/pdftools/pdftools.pdf")
pdfs <- list()
for(i in 1:length(pdf_urls)) {
print(paste("Obtaining pdf", i, "of", length(pdf_urls)))
pdf_url <- pdf_urls[i]
pdfs[[i]] <- callr::r(function(pdf_path){
pdftools::pdf_text(pdf_path)
}, args = list(pdf_url))
}