pdf_text函数未释放ram(在Windows上)

时间:2019-06-22 13:04:50

标签: r pdftools

# 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倍的内存!我不确定为什么

2 个答案:

答案 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))

}