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