Out Of Memory Error(Java)를 해결하는 방법: GC 오버헤드 제한이 r에서 초과됩니까?
나는 폴더 목록의 파일을 읽고 R에 데이터를 저장해야 합니다.저는 제 테스트 데이터에 다음 코드를 사용하고 작동합니다.실제 데이터에 코드를 사용하면 이 오류가 발생합니다.
오류: Out Of MemoryError(Java): GC 오버헤드 제한을 초과함 호출 위치: 최상위 수준
테스트 데이터를 위해 수행한 작업입니다.
parent.folder <- "C:/Users/sandesh/Desktop/test_R"
sub.folder <- list.dirs(parent.folder, recursive =TRUE)[-1]
file <- file.path(sub.folder, "sandesh1.xlsx")
library(xlsx)
library(plyr)
fun <- function(file) {
df <- read.xlsx(file, sheetIndex=1)
}
df.big <- ldply(file, fun)
이것은 rJava의 일반적인 문제입니다.xlsx 라이브러리와 동일한 방식으로 rJava를 사용하여 연결하는 XLConnect 문서에 답변되어 있습니다.여기서 인용합니다.
"이는 XLConnect(xlsx의 경우 동일)가 전체 데이터 개체를 파일에 쓰기 위해 JVM에 복사해야 하고 JVM을 메모리 크기에 대한 고정 상한으로 초기화해야 하기 때문입니다.이 양을 변경하려면 rJava의 옵션 지원을 통해 R의 JVM에 매개 변수를 명령줄 Java 프로세스에 전달하는 것과 마찬가지로 매개 변수를 전달할 수 있습니다.
options(java.parameters = "- Xmx1024m")
그러나 이러한 매개 변수는 JVM이 초기화될 때 R 세션당 정확히 한 번 평가됩니다. 이는 일반적으로 Java 지원을 사용하는 첫 번째 패키지를 로드한 후의 일이므로 가능한 한 빨리 평가해야 합니다."
위에서 언급한 대로 라이브러리를 로드하기 전에 스크립트 시작 부분에서 옵션 기능을 실행하고 Rstudio를 통해 실행하는 경우 스크립트를 실행하기 전에 재시작해야 합니다.
또한 구문 분석하려는 파일의 크기에 따라 이 작업이 제대로 수행될지는 아직 확실하지 않습니다.
언급URL : https://stackoverflow.com/questions/27153974/how-to-fix-outofmemoryerror-java-gc-overhead-limit-exceeded-in-r
'sourcecode' 카테고리의 다른 글
MongoDB에서 제약 조건을 적용하는 방법은 무엇입니까? (0) | 2023.07.03 |
---|---|
버전을 2.7.0으로 업데이트할 때 Springboot을 시작하는 중 오류 발생 "존재하지 않는 메서드를 호출하려고 했습니다." (0) | 2023.07.03 |
Vue TypeScript 프로젝트의 이벤트 유형은 무엇입니까? (0) | 2023.06.28 |
SQL이 where 절에서 열 별칭을 인식하지 못합니다. (0) | 2023.06.28 |
스프링 부트 액추에이터 상태 끝점을 사용자 지정 끝점으로 변경 (0) | 2023.06.28 |