【问题标题】:MemoryError in R while read.xlsxR中的MemoryError而read.xlsx
【发布时间】:2012-09-19 11:32:41
【问题描述】:

我正在使用以下 R 代码(也使用 Java 参数来增加内存):

library(xlsx)
options(java.parameters = "-Xmx1g")
library(XLConnect)
NiVe <- read.xlsx("version1.xlsx",1)

version1.xlsx 文件大小为 13 MB。我收到以下错误:

Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
  java.lang.OutOfMemoryError: Java heap space

有人可以帮忙吗?

【问题讨论】:

  • 就是因为这个问题,我放弃了xlsx这个包,搬到了readxl,也就是faster

标签: java r out-of-memory heap-memory r-xlsx


【解决方案1】:

尝试增加java堆大小(足够),使用:

options(java.parameters = "-Xmx1000m")

如果您使用的是 32 位 R,请确保您也使用 32 位 Java 和 如果您使用 64 位 R,请确保您也在使用 64 位 Java。如果 您会收到一条 Java 堆空间消息,指示它内存不足 见this post

this thread 可以帮助你,使用垃圾收集。

参考:
exchanging_data_between_r_and_ms_windows_apps_excel_etc
stats-rosuda-devel_001621

【讨论】:

  • If you are using 32 bit R make sure you are also using 32 bit Java and if you re using 64 bit R make sure you are also using 64 bit Java。如何检查这个?
【解决方案2】:

您应该确保在初始化任何 JVM 之前设置 Java 参数,即在加载 XLConnect 或 xlsx 包之前。请注意,在您的情况下,您使用的是 read.xlsx 函数,它不是 XLConnect 函数,因此不需要 XLConnect 包。 XLConnect 替代方案是函数 readWorksheetFromFile

【讨论】:

  • 知道为什么打开 Excel 文件需要这么多内存吗?我必须将限制设置为 2 GB 才能打开 23 MB 的文件。
  • 我和@rrs 在一起,只是在获得 25GB 内存来写入 15MB 文件后,Java 吓坏了......
【解决方案3】:

试试这个:- 可能这可以工作。它对我有用

1) 下载 xlsx 文件时,使用这个 download.file(fileURL, destfile="./whatever", mode="wb")

2) 切换到常规 R,而不是 R Studio,

【讨论】:

    猜你喜欢
    • 2020-11-23
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多