首先,我必须说,我长期以来一直在寻找问题的解决方案,并且启动此线程是一次绝望的尝试。所有信息(及其各自的解决方案)都与运行代码的多次迭代或处理大文件(> 500Mb)时的内存泄漏有关。但这不是我的情况。
我的代码 - 在触发错误之前 - 看起来像这样:
library(tidyverse)
library(lubridate)
library(XLConnect)
library(tibble)
library(rJava)
path <- "file_path/file_name.xlsx"
wb <- loadWorkbook(path)
这会触发以下消息:
错误:OutOfMemoryError (Java):Java 堆空间
文件的大小只有7Mb。如果我尝试上传较小的文件 (500Kb),则不会出现错误。我已经尝试使用
options(java.parameters = "-Xmx8g")
为 Java 内存设置更高的值,但它没有解决问题。
垃圾收集器看起来像这样:
used (Mb) gc trigger (Mb) max used (Mb)
N细胞 1157125 61.8 2240345 119.7 2240345 119.7
Vcells 1793273 13.7 8388608 64.0 2904659 22.2
有人知道是什么原因造成的吗?我的环境完全干净,并且我不断重新启动我的 Rstudio 会话。该文件只是一个 .xlsx 文档,我需要加载它才能使用数据帧中的数据填充列。
在 JVM 初始化之前设置 Java 选项非常重要,因此在加载任何 Java 相关包之前。所以你应该:
options(java.parameters = "-Xmx8g")
library(XLConnect)
path <- "file_path/file_name.xlsx"
wb <- loadWorkbook(path)