在Unix shell中将可用内存增加到R进程

时间:2013-02-16 13:14:08

标签: r

我在拥有16 GB RAM的Unix操作系统上运行R进程。我正在运行一个R会话,我正在进行以下操作:

我将一个大小约为350 MB的csv文件导入数据框。 然后我在上面创建的数据框上运行一个操作,为每个唯一的组选择前n个产品。

但是,当我检查此R会话所占用的内存量时,它显示大约90%,然后自动会话被杀死。我对unix上R的内存管理不太了解。 因为,我的系统操作系统有16 GB RAM,我的R会话最多可能占用700 MB(导入的CSV为350 MB,正在创建的新数据帧为350 MB),那么它如何使用90%系统的记忆并被杀死。在Unix中分配给R进程的内存是否有一些默认限制?如果是,可以增加。任何人都可以建议。我经历了许多类似的帖子,但找不到任何解决方案。

1 个答案:

答案 0 :(得分:4)

你没有说出你的Unix风格,以及它是32位还是64位。这很重要。

作为第一个测试,尝试分配您认为应该具有的内存量,例如

 m <- rep(NA, 0.8 * 16 * 1024 * 1024 * 1024 / 8)

 m <- matrix(NA, 0.8 * 16 * 1024 * 1024 * 1024 / 8, 1)

表示16 gb,每个元素为8个字节,我们要求总数的80%不会导致系统崩溃。

然后,一旦你知道你可以获得多少记忆,就像丹尼尔建议的那样思考并思考你的记忆 方法通过知道他们需要多少。