Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R read.xlsx内存泄漏?_R_Memory Leaks_R Xlsx - Fatal编程技术网

R read.xlsx内存泄漏?

R read.xlsx内存泄漏?,r,memory-leaks,r-xlsx,R,Memory Leaks,R Xlsx,我在Ubuntu 64位14.04上使用R版本3.0.2,并使用read.xlsx包来读取几个xlsx表。我是这样做的: options(java.parameters = "-Xmx4g" ) require(xlsx) d1 = read.xlsx2(file, sheetName=sheet.1) d2 = read.xlsx2(file, sheetName=sheet.2) d3 = read.xlsx2(file, sheetName=sheet.3) 这主要起作用,但R需要更多的

我在Ubuntu 64位14.04上使用R版本3.0.2,并使用read.xlsx包来读取几个xlsx表。我是这样做的:

options(java.parameters = "-Xmx4g" )
require(xlsx)
d1 = read.xlsx2(file, sheetName=sheet.1)
d2 = read.xlsx2(file, sheetName=sheet.2)
d3 = read.xlsx2(file, sheetName=sheet.3)
这主要起作用,但R需要更多的ad和内存,当它开始交换时,它不会在适当的时间终止。我认为问题在于,用于读取xlsx文件的内存在函数终止后没有被释放,因为即使我删除了所有删除的数据1。。。内存仍然被占用。我尝试使用ls查找read.xlsx使用的任何旧对象,但没有临时对象


一个有效的解决方案是读取文件,直到内存满为止。然后保存工作区,关闭R,重新打开R并加载保存的工作区。但这肯定不是最好的解决方案!因此,实际的问题是:如何强制read.xlsx在完成后释放内存并杀死子进程?

尝试调用垃圾收集器gc,看看这是否有帮助。到目前为止,很难说这是否是一个漏洞。如果你很好奇,你可以尝试做一些类似于描述的事情来调查这个问题。如果你的猜测是正确的,那就足够发布错误报告了。请同时发布你的R版本和OS版本。您能解释一下为什么需要设置java参数吗?我添加了R和OS版本。必须设置java参数以防止outOfMemory。这经常被报道。我将尝试手动调用gc,但它应该在内存不足时自动调用…gc不会减少内存负载正是因为这个问题,我放弃了xlsx包,转而使用readxl,这是