zoukankan      html  css  js  c++  java
  • Error: cannot allocate vector of size 88.1 Mb问题

      这几天训练模型运行代码的时候,老是提示我说: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.csdn.net/sinat_26917383/article/details/51114265

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

  • 相关阅读:
    Hadoop-HA配置详细步骤
    Oracle 事务
    2 Oracle用户和表空间
    oracle 客户端监听文件配置
    Django 关联管理器
    第2讲 | 网络分层的真实含义是什么?
    hihoCoder #1151 : 骨牌覆盖问题·二 (矩阵快速幂,DP)
    poj 2411 Mondriaan's Dream (轮廓线DP)
    SPOJ COT2 Count on a tree II (树上莫队,倍增算法求LCA)
    HYSBZ 1086 王室联邦 (树的分块)
  • 原文地址:https://www.cnblogs.com/babyfei/p/9565143.html
Copyright © 2011-2022 走看看