Error: cannot allocate vector of size 88.1 Mb问题

博客围绕R语言运行代码时提示内存分配不足的问题展开,介绍了多种解决方法,如升级到R3.3.0及以上版本、加载磁盘缓存包、清理内存、采用parallel计算策略、使用bigmemory包等,还提及可升级硬件、改进算法、修改操作系统分配给R的内存上限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  这几天训练模型运行代码的时候,老是提示我说:Error: cannot allocate vector of size 88.1 Mb,只知道分配空间不足。

 下面是查资料看到的一些回答:

一、这个是R的特点,有几个解决方法:
1.升级到R3.3.0及以上版本,对内存的管理和矩阵计算好太多。在R3.2.5上能死机的计算,在R3.3.0以上就能运行很好。
2.加载一些R语言磁盘缓存包,搜一搜吧
3.写代码的时候适当加一些清理内存的命令。
4.应该跑多线程了吧。
5.加内存作用有限。在R3.2.5上能把服务器跑死机,服务器是44核,512G内存。优化一下代码很有必要。

二、有的时候加内存条也不能解决大数据量多的需求,采用parallel计算策略吧,如果数据一次性读入也不行,可配合filematrix包,分次从硬盘读数据,不过这会慢很多。

三、R里面找到那个参数,有个地方是改最大分配内存的,在Preference之类的地方。

四、下载一个Package叫bigmemory。里面重新为大的数据集构建了类,在处理大数据集的功能上(包括几十GB)基本上是最前沿的。

      链接为cran.r-project.org/web/packages/bigmemory/

五、bigmemory包是可以的。另外还提供了另外两种选择,mapReduce和RHIPE(使用Hadoop),也可以处理大数据集。

六、大神指导(http://bbs.pinggu.org/thread-3682816-1-1.html),cannot allocate vector就是典型的数据太大读不了

方法有三
一、升级硬件
二、改进算法
三、修改操作系统分配给R的内存上限, memory.size(T)查看已分配内存 

memory.size(F)查看已使用内存  

memory.limit()查看内存上限 

object.size()看每个变量占多大内存。
memory.size()查看现在的work space的内存使用
memory.limit()查看系统规定的内存使用上限。

如果现在的内存上限不够用,可以通过memory.limit(newLimit)更改到一个新的上限。注意,在32位的R中,封顶上限为4G,无法在一个程序上使用超过4G (数位上限)。这种时候,可以考虑使用64位的版本。

 详细可参考此篇,非常棒https://blog.youkuaiyun.com/sinat_26917383/article/details/51114265

  如果遇到这个问题,大家可以对应试试解决方案,方法还不错哦~

转载于:https://www.cnblogs.com/babyfei/p/9565143.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值