我在Ubuntu 64bit(14.04)和包R
上使用read.xlsx
(版本3.0.2)来读取几个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
需要更多内存,当它开始交换时,它不会在适当的时间内终止。我认为问题是在函数终止后没有释放用于读取xlsx文件的内存,因为即使我删除了所有数据(remove(d1)
,...),内存仍然被占用。我尝试使用read.xlsx
查找ls()
使用的任何旧对象,但没有临时对象......
一个有效的解决方案是读取文件直到内存已满。然后保存工作区,关闭R
,重新打开R
并加载已保存的工作区。但这肯定不是最好的解决方案!因此,实际的问题是:如何在完成后强制read.xlsx
释放内存(并杀死子进程)?