web-dev-qa-db-fra.com

Erreur R: Java.lang.OutOfMemoryError: Java heap space

J'essaie de connecter R à Teradata pour extraire les données directement dans R pour analyse. Cependant, je reçois l'erreur de,

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

J'ai essayé de configurer mes options R pour augmenter la taille maximale du tas de JVM en faisant:

options(Java.parameters = "-Xmx8g")

J'ai également essayé d'initialiser les paramètres Java avec la fonction rJava .jinit Sous la forme: .jinit(parameters="-Xmx8g"). Mais j'ai toujours échoué.

La taille calculée des données doit être d'environ 3G (en fait inférieure à 3G).

27
user3768354

Vous devez vous assurer que vous allouez de la mémoire supplémentaire avant de charger rJava ou tout autre package. Essuyez d'abord l'environnement (via rm(list = ls())), redémarrez R/Rstudio si vous le devez et modifiez les options au début de votre script.

options(Java.parameters = "-Xmx8000m")

Voir par exemple https://support.snowflake.net/s/article/solution-using-r-the-following-error-is-returned-javalangoutofmemoryerror-gc-overhead-limit-exceeded

26
tuxedopong

J'ai en quelque sorte eu ce problème d'une manière non reproductible, en partie résolu avec -Xmx8g mais rencontrez des problèmes au hasard.

J'ai maintenant trouvé une option avec un autre garbage collector en utilisant

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

au début du script. Jusqu'à présent, le problème ne s'est pas reproduit.

MODIFIER:
J'ai compris, nous pouvons même combiner plusieurs paramètres Java. Donc, cette solution n'a pas échoué maintenant.

EDIT 2: Donc encore une chose à propos de cette solution, je me suis dit qu'aujourd'hui, il est plus économique d'exécuter la commande options avant de charger tout autre paquet !!! car certains packages chargent des éléments Java par eux-mêmes et les options doivent être définies au début de la session R!

3
drmariod