R Error: java.lang.OutOfMemoryError: Java heap space

2022-09-01 01:04:35

我正在尝试将 R 连接到 Teradata,以便将数据直接提取到 R 中进行分析。但是,我得到的错误是,

Error in .jcall(rp, "I", "fetch", stride, block) :
  java.lang.OutOfMemoryError: Java heap space

我尝试设置我的R选项以增加JVM的最大堆大小::

options(java.parameters = "-Xmx8g")

我还尝试使用rJava函数初始化java参数:.但仍然失败了。.jinit.jinit(parameters="-Xmx8g")

计算出的数据大小应约为3G(实际上小于3G)。


答案 1

您需要确保在加载 rJava 或任何其他包之前分配额外的内存。首先擦除环境(通过),如果必须,请重新启动 R/Rstudio,并修改脚本开头的选项。rm(list = ls())

options(java.parameters = "-Xmx8000m")

例如,请参阅 https://support.snowflake.net/s/article/solution-using-r-the-following-error-is-returned-javalangoutofmemoryerror-gc-overhead-limit-exceeded


答案 2

我以某种方式以一种不可重复的方式遇到了这个问题,部分解决了它,但随机遇到了问题。-Xmx8g

我现在通过使用不同的垃圾回收器找到了一个选项

options(java.parameters = c("-XX:+UseConcMarkSweepGC", "-Xmx8192m"))
library(xlsx)

在脚本的开头和加载任何其他包之前,因为其他包可以自己加载一些Java的东西,并且在加载任何Java之前必须设置选项。

到目前为止,问题没有再次发生。

只有有时在长时间的会话中,它仍然会发生。但在这种情况下,会话重新启动通常可以解决问题。


推荐