stdin
과 stdout
을 통해 Java 데몬과 상호 작용하는 R 응용 프로그램이 무한 루프에 있는데, 이는 약간의 메모리 누수가있는 것으로 보입니다. 단순화 된 R 응용 프로그램 :닫힌 연결로 인한 메모리 누수
while (TRUE) {
con <- file('stdin', open = 'r', blocking = TRUE)
line <- scan(con, what = character(0), nlines = 1, quiet = TRUE)
close(con)
}
이 루프는 점점 더 많은 RAM을 사용하여 종료, 내가 수동으로 gc()
close(con)
호출 후, 메모리 풋 프린트가 잠시 동안 확인 될 것으로 보인다해도, 결국 영원히 성장한다.
Rscript --vanilla -e "while(TRUE)cat(runif(1),'\n')" | Rscript --vanilla -e "cat(Sys.getpid(), '\n');while (TRUE) {con <- file('stdin', open = 'r', blocking = TRUE);line <- scan(con, what = character(0), nlines = 1, quiet = TRUE);close(con);gc()}"
이 두 개의 R 프로세스를 시작합니다 :
기본 스크립트는 다음을 확인 한 서면 stdout
및 파이프와 연결 stdin
에서 읽기 다른 (두 번째는 그래서 당신이 할 수있는 pid
인쇄) 관련 메모리 사용을 모니터링 :
내가 잘못 뭘하는지 모르겠지만, 그래서 어떤 도움이 높게 평가되고이 메모리 누수를 중지 싶어요.
토론에 관심이있는 분이라면 [R-devel] (https://stat.ethz.ch/pipermail/r-devel/2016-November/thread.html#73360) – daroczig