我使用包RJDBC和函数dbGetQuery来获得一个SQL查询的输出。该代码适用于行数不多的SQL语句,但哪些语句行> 1.000.000,则会出现错误。是否有处理内存的参数?
dbGetQuery(conn,"SQL..")然后我得到以下错误消息:
.jcall中的错误(rp,"I","fetch",stride,block): java.lang.OutOfMemoryError:超过GC开销限制
谢谢!R007
发布于 2020-09-30 16:04:59
正如本文所提到的,在加载库之前将java参数参数放在代码的顶部应该会从默认的512 MB增加堆大小。如果您已经加载了您的包,您将需要重新启动R并重新运行要应用的更改的代码。
# Do this first
options(java.parameters = "-Xmx4g")
# Then load your libraries
library(XLConnect)
library(RJDBC)接下来,您可以根据需要经常使用XLConnect包来释放Java内存。
# Free up java memory
XLConnect::xlcFreeMemory()如果你像我一样运行一个很大的循环,你可能需要在重新输入和运行之前把它插入到循环中来释放内存。
当然,在运行代码之前安装包:
# Install XLConnect
install.packages("XLConnect")这两件事加在一起可能就足以解决你的问题了。
有关此主题的进一步阅读可在此处找到:"Out of Memory Error (Java)" when using R and XLConnect package
https://stackoverflow.com/questions/40481100
复制相似问题