web-dev-qa-db-ja.com

Rエラー:Java.lang.OutOfMemoryError:Java heap space

RをTeradataに接続して、分析のためにデータを直接Rにプルしようとしています。しかし、私はのエラーを取得しています、

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

私はRオプションを設定して、JVMの最大ヒープサイズを増やすことを試みました:

_options(Java.parameters = "-Xmx8g")
_

また、Java rJava関数_.jinit_のパラメーターを.jinit(parameters="-Xmx8g")として初期化しようとしましたが、まだ失敗しました。

計算されるデータのサイズは約3G(実際には3G未満)でなければなりません。

27
user3768354

追加のメモリを割り当てていることを確認する必要がありますbefore rJavaまたは他のパッケージをロードしています。最初に環境を(rm(list = ls())を介して)ワイプし、必要に応じてR/Rstudioを再起動し、スクリプトの先頭でオプションを変更します。

options(Java.parameters = "-Xmx8000m")

例を参照してください https://support.snowflake.net/s/article/solution-using-r-the-following-error-is-returned-javalangoutofmemoryerror-gc-overhead-limit-exceeded

26
tuxedopong

どういうわけか、この問題は再現性のない方法であり、-Xmx8gしかし、ランダムに問題が発生します。

私は今、別のガベージコレクターを使用してオプションを見つけました

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

スクリプトの冒頭。これまでのところ、問題は再び発生していません。

編集:
私は、複数のJavaパラメーターを組み合わせることさえできることを理解しました。このソリューションは今のところ失敗しませんでした。

編集2:このソリューションに関するもう1つのことは、他のパッケージをロードする前にoptionsコマンドを実行する方が節約できるということです。いくつかのパッケージは、いくつかのJavaを単独でロードするため、Rセッションの開始時にオプションを設定する必要があります!

3
drmariod