使用 XLConnect 加载小文件时出现“错误:OutOfMemoryError (Java):Java 堆空间”

问题描述 投票:0回答:1

首先,我必须说,我长期以来一直在寻找问题的解决方案,并且启动此线程是一次绝望的尝试。所有信息(及其各自的解决方案)都与运行代码的多次迭代或处理大文件(> 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 文档,我需要加载它才能使用数据帧中的数据填充列。

java r jvm rstudio xlconnect
1个回答
0
投票

在 JVM 初始化之前设置 Java 选项非常重要,因此在加载任何 Java 相关包之前。所以你应该: options(java.parameters = "-Xmx8g") library(XLConnect) path <- "file_path/file_name.xlsx" wb <- loadWorkbook(path)

© www.soinside.com 2019 - 2024. All rights reserved.