2016-01-06 12 views
10

Próbuję połączyć R z Teradata, aby pobrać dane bezpośrednio do R do analizy. Jednakże, otrzymuję błąd:R Błąd: java.lang.OutOfMemoryError: Przestrzeń sterty Java

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

Próbowałem skonfigurować opcje R, aby zwiększyć rozmiar maks sterty JVM wykonując:

options(java.parameters = "-Xmx8g") 

Próbowałem również zainicjować java parametry z funkcją rJava .jinit jako: .jinit(parameters="-Xmx8g"). Ale wciąż nie udało się.

Obliczony rozmiar danych powinien wynosić w przybliżeniu 3G (w rzeczywistości mniej niż 3G).

Czy ktoś może mi w tym pomóc? Każda rada jest doceniana.

+0

można spróbować użyć mniej pamięci, aby sprawdzić, czy w ogóle działa? Tylko dlatego, że surowe dane mają tylko 3 GB, nie wyklucza możliwości, że JVM potrzebuje więcej pamięci niż ta. –

+0

Musisz się upewnić, że uruchomisz 'options (java.parameters =" -Xmx8g ")' przed uruchomieniem instancji Java. Zacznij więc od nowej sesji R z załadowanymi pakietami NO. Uruchom to polecenie, a następnie wczytaj wszystkie pakiety i spróbuj ponownie. Powinieneś być w porządku, ale jest możliwe, że JVM potrzebuje dużo z innych powodów. – stanekam

+0

Przypuszczam, że "wyliczony rozmiar danych" jest wielkością znaczących przechowywanych informacji. Jednak struktury danych nie są idealne w przypadku korzystania z pamięci - mają pola do użytku wewnętrznego, alokują dodatkową pamięć, aby zapobiec ponownemu przydzielaniu dodatków danych, więc nawet puste struktury danych bez żadnych danych zużywają trochę pamięci. Tak więc 3Gb danych może z łatwością wymagać więcej niż 8Gb pamięci operacyjnej. – user3707125

Odpowiedz

Powiązane problemy