13

xlsx パッケージを使用して、ワークブック、ワークシートを作成し、シートにデータを書き込んで、ワークブックを保存しています。ただし、この一連のアクションを数回繰り返すと、次のエラー メッセージが表示されます。

>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"

これは、アクションの繰り返しがJavaメモリを消費するためだと思います。

私の質問は、メモリ不足エラーが発生することなくこれらのアクションを再度繰り返すことができるように、メモリをクリア/再初期化するにはどうすればよいですか?

これを達成できるrの簡単なコードはありますか?

アドバイスありがとうございます!

4

2 に答える 2

9

xlsxでそれを行う方法がわかりません。実際、これらの問題のために使用しなくなりました

私は今XLConnectを使用しており、コマンドがあります

xlcFreeMemory()

それだけをする

最良の結果を得るには、次のようにロードする前に Java メモリを増やす必要があることに注意してください。

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

幸運を

于 2014-02-05T18:50:05.290 に答える