2012-09-18 15 views
10

Estoy usando el paquete xlsx para crear un libro de trabajo, una hoja de trabajo, escribir datos en la hoja y luego guardar el libro. Sin embargo, cuando repito este conjunto de acciones para varias veces, me pongo al mensaje de error:r - ¿Cómo borrar la memoria utilizada por rJava?

>Error in .jcheck(silent = FALSE) : 
    java.lang.OutOfMemoryError: GC overhead limit exceeded.jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, .jcast(if (inherits(o, "jobjRef") || inherits(o, "jarrayRef")) o else cl, "java/lang/Object"), .jnew("java/lang/String", method), j_p, j_pc, use.true.class = TRUE, evalString = simplify, evalArray = FALSE)<S4 object of class "jobjRef" 

>Error in .jnew("java/io/FileOutputStream", file) : 
    Java Exception <no description because toString() failed>.jnew("java/io/FileOutputStream", file)<S4 object of class "jobjRef"> 

>Error in .jnew("org/apache/poi/xssf/usermodel/XSSFWorkbook") : 
    Java Exception <no description because toString() failed>.jnew("org/apache/poi/xssf/usermodel/XSSFWorkbook")<S4 object of class "jobjRef"> 

Error in .jcheck(silent = FALSE) : 
    Java Exception <no description because toString() failed>.jcall(wb, "Lorg/apache/poi/ss/usermodel/Sheet;", "createSheet", sheetName)<S4 object of class "jobjRef" 

supongo que esto es debido a la repetición de las acciones consumen la memoria de Java.

Mi pregunta es, ¿cómo puedo borrar/reiniciar la memoria para que pueda repetir estas acciones nuevamente sin tener los errores de memoria?

¿Hay algún código simple en r que pueda lograr esto?

Muchas gracias por su consejo!

Respuesta

6

no sé cómo hacerlo en xlsx, de hecho ya no lo uso debido a esos problemas

ahora uso XLConnect, y tiene un comando

xlcFreeMemory() 

para hacer precisamente que

Tenga en cuenta que para obtener mejores resultados que necesita para aumentar la memoria de Java antes de la siguiente manera YOULOAD

options(java.parameters = "-Xmx4g") 
library(XLConnect) 

Buena suerte

Cuestiones relacionadas