【问题标题】:pdf_text function not releasing ram (on windows)pdf_text 函数不释放内存(在 Windows 上)
【发布时间】:2019-06-22 13:04:50
【问题描述】:

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

小例子

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

我有cleared the R session's temp files

另请注意

虽然上例中特定 pdf 的大小约为 5mb,但在其上调用 pdf_text 会使用大约 20 倍的内存!我不知道为什么

【问题讨论】:

    标签: r pdftools


    【解决方案1】:

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

    我有 started an issue 来跟踪此问题,您能否报告您正在使用的哪个版本的 pdftools 和 libpoppler 显示此行为?

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-16
        • 1970-01-01
        • 2010-09-19
        • 1970-01-01
        • 2016-09-12
        • 1970-01-01
        相关资源
        最近更新 更多