2012-09-18 21 views
10

Tôi đang sử dụng gói xlsx để tạo sổ làm việc, trang tính, ghi dữ liệu vào trang tính và sau đó lưu sổ làm việc. Tuy nhiên, khi tôi lặp lại bộ hành động này nhiều lần, tôi bắt đầu với thông báo lỗi:r - Làm thế nào để xóa bộ nhớ được sử dụng bởi 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" 

Tôi đoán điều này là do việc lặp lại các hành động tiêu thụ bộ nhớ Java.

Câu hỏi của tôi là, làm cách nào để xóa/khởi tạo lại bộ nhớ để tôi có thể lặp lại các tác vụ này một lần nữa mà không bị lỗi bộ nhớ?

Có mã đơn giản nào trong r có thể đạt được điều này không?

Cảm ơn rất nhiều lời khuyên của bạn!

Trả lời

6

Tôi không biết làm thế nào để làm điều đó trên xlsx, trên thực tế tôi không còn sử dụng nó vì những vấn đề

tôi hiện nay sử dụng XLConnect, và nó có một lệnh

xlcFreeMemory() 

làm chỉ rằng

Xin lưu ý rằng kết quả tốt nhất bạn cần tăng bộ nhớ Java trước khi youload nó như sau

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

Chúc may mắn

Các vấn đề liên quan