使用XLConnect加载小文件时出现“Error:OutOfMemoryError(Java):Java heap space”

wf82jlnq  于 12个月前  发布在  Java
关注(0)|答案(1)|浏览(98)

首先,我必须说,我一直在寻找一个解决我的问题的方法,开始这个线程是一个绝望的尝试。所有的信息(以及它们各自的解决方案)都涉及到当运行几个迭代的代码或处理沉重的文件(> 500Mb)时的内存泄漏。但这不是我的情况。
我的代码-在错误被触发之前-看起来像这样:

library(tidyverse)
library(lubridate)
library(XLConnect)
library(tibble)
library(rJava)

path <- "file_path/file_name.xlsx"

wb <- loadWorkbook(path)

字符串
这将触发以下消息:
错误:OutOfMemoryError(Java):Java堆空间

  • file * 的大小只有7Mb。如果我尝试上传一个更小的文件(500Kb),我不会得到任何错误。我已经尝试使用options(java.parameters = "-Xmx8g")为Java内存设置更高的值,但它没有解决问题。

垃圾收集器看起来像这样:

used (Mb) gc trigger  (Mb) max used  (Mb)


Ncells 1157125 61.8 2240345 119.7 2240345 119.7
Vcell 1793273 13.7 8388608 64.0 2904659 22.2
有没有人知道是什么原因导致了这个问题?我的环境是完全干净的,我不断地重新启动我的Rstudio会话。该文件只是一个. xlsx文档,我需要加载它以便用来自一个框架的数据填充列。

4c8rllxm

4c8rllxm1#

在初始化JVM之前设置Java选项是很重要的,因此在加载任何与Java相关的包之前也是如此。所以你应该:

options(java.parameters = "-Xmx8g")

library(XLConnect)
path <- "file_path/file_name.xlsx"
wb <- loadWorkbook(path)

字符串

相关问题