Dear All, I'm developing an R application running inside of a Java daemon on multiple threads, and interacting with the parent daemon via stdin and stdout.
Everything works perfectly fine except for having some memory leaks somewhere. Simplified version of the R app: while (TRUE) { con <- file('stdin', open = 'r', blocking = TRUE) line <- scan(con, what = character(0), nlines = 1, quiet = TRUE) close(con) } This loop uses more and more RAM as time passes (see more on this below), not sure why, and I have no idea currently on how to debug this further. Can someone please try to reproduce it and give me some hints on what is the problem? Sample bash script to trigger an R process with such memory leak: 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);rm(con);gc()}" Maybe you have to escape '\n' depending on your shell. Thanks for reading this and any hints would be highly appreciated! Best, Gergely PS1 see the image posted at http://stackoverflow.com/questions/40522584/memory-leak-with-closed-connections on memory usage over time PS2 the issue doesn't seem to be due to writing more data in the first R app compared to what the second R app can handle, as I tried the same with adding a Sys.sleep(0.01) in the first app and that's not an issue at all in the real application PS3 I also tried using stdin() instead of file('stdin'), but that did not work well for the stream running on multiple threads started by the same parent Java daemon PS4 I've tried this on Linux using R 3.2.3 and 3.3.2 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel