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

pdf_text function not releasing ram (on windows)

pdf_text() 没有释放 RAM。每次函数运行时,它都会使用更多 RAM,并且在 R 会话终止之前不会释放它。我在 windows.

最小示例

# 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")
  
}

我的问题

为什么 pdf_text() 使用了这么多内存,如何释放它? (无需终止 R 会话)

到目前为止我尝试了什么

我在循环中尝试了gc()

我检查过 pdf_text() 没有创建一些隐藏对象(通过检查 ls(all=TRUE)

我有

另请注意

虽然上面示例中特定 pdf 的大小约为 5mb,但对其调用 pdf_text 使用的 ram 约为 20 倍!我不确定为什么

这听起来像是内存泄漏。但是我无法在 MacOS 上重现此问题。

我有 started an issue 来跟踪这个,你能报告一下你使用的是哪个版本的 pdftools 和 libpoppler 显示这个行为吗?

对于通过 google 到达这里的任何人,这是为我解决问题的方法 - 它基于 Jeroen 的建议 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))

}