R 的保留内存是已分配数组大小的两倍

2024-06-23

我发现了以下行为。假设我创建以下多维数组:

spam = array(runif(96*48*60*360), dim = c(96,48,60,360))

R 为此需要使用多少内存是可以预测的,即 (96*48*60*360) * 4 字节 = 759.4 Mbyte。使用以下很好地证实了这一点lsos函数(参见这个帖子 https://stackoverflow.com/questions/1358003/tricks-to-manage-the-available-memory-in-an-r-session):

> lsos()
         Type      Size PrettySize Rows Columns
spam    array 796262520   759.4 Mb   96      48
lsos function       776  776 bytes   NA      NA

然而,R 作为一个进程使用更多的内存,大约是大小的两倍:

$ top | grep rsession
82:17628 hiemstra  20   0 1614m **1.5g** 8996 S  0.3 40.4   0:04.85 rsession  

R为什么要这样做?我假设分配额外的保留内存是为了让 R 更快地访问它?有什么想法吗?


因为垃圾收集器还没有运行。
因此,有很多垃圾,可能是在创建大数组期间生成的,必须清除。

如果您通过调用强制垃圾收集gc()函数,您将看到使用的内存将非常接近数组的大小:

> memory.size()
[1] 775.96
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 的保留内存是已分配数组大小的两倍 的相关文章

  • R 中带有自定义字段类的参考类?

    我想在另一个引用类中使用自定义引用类 但此代码失败 nameClass lt setRefClass nameClass fields list first character last character methods list ini
  • 数据框中的动物园滞后差异

    我想将滞后差异的结果放回到我的数据框中 这意味着我将拥有针对不同滞后的领先 NA 我在用 new df lag1 lt diff new df Close lag 1 differences 1 arithmetic TRUE na pad
  • 使用 Visual Studio 确定堆栈空间

    我正在 Visual Studio 2005 中使用 C 进行编程 我有一个多线程程序 但这在这里并不是特别重要 如何确定 大约 我的线程使用了多少堆栈空间 我计划使用的技术是将堆栈内存设置为某个预定值 例如 0xDEADBEEF 长时间运
  • Shiny:合并 DT::datatable 中的单元格

    我想以闪亮的方式合并 DT datatable 列中的几行 可以这样做吗 目前我能够输出如下所示 但理想情况下 我想合并行并希望输出如下所示的内容 是否可以在 DT datatable 中合并这样的行 在以下人员的帮助下这是可能的数据表行组
  • 每行和每列都有条件的随机值(0 和 1)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 您好 我正在尝试在 R 中创建一个 600 行和 18 列的数据框 但是 每行 18 列中只能随机有 3 个 1 例如 A E F 列
  • R:读取多个Excel文件,提取第一个工作表名称,并创建新列

    我有多个 Excel 文件 并且它们具有唯一的工作表名称 在我的情况下是文件创建日期 我批量阅读它们 需要将工作表名称分配给新列 id 中的每个文件 我知道如何制作数字 id 或 id 文件名 但找不到将工作表名称获取为 id 的方法 li
  • Stata的xtnbreg有R函数吗?

    一直在使用 Stata 在复制中运行负二项式回归 不确定 Stata 是如何做到这一点的 但想知道是否有 R 函数 包可以做同样的事情 R 会让我更好地了解它是如何工作的 因为我可以看到代码 看看glm nb函数在MASS包裹 如果您对 幕
  • 绘图中的文本错误 | Jupyter-R

    我正在尝试在通过 Anaconda 安装的 Jupyter 笔记本上使用 R 中的 ggplot2 绘制一个带有一些数据的简单散点图 以下是我使用的代码 ggplot data df1 1 1000 geom point mapping a
  • R 代码编程:在堆叠排序表上先向下填充缺失列值,然后向上填充

    我有一个包含 3 列的数据框 但第三列有一些缺失值 需要用以下逻辑填充 期望的结果是第三列 部分 上没有缺失值 要填充它 我们必须找到第一个 周 其中为该特定 项目 第一列 填充了 部分 值 并且然后通过向下复制 part 来填充它 直到找
  • 基于 R 中多个现有列的计算的新列

    R df orginal 中的原始数据框 AB CD EF GH A 0 12 M A 0 13 F A 0 14 F A 1 16 M A 1 17 F A 1 18 M A 1 18 M A 2 0 78 M A 2 0 12 M A
  • 如何将 unicode 符号转换为 ggplot 的因子水平?

    我想在 ggplot 图例中获取一个符号 而不在比例中指定 我要这个 df lt data frame a 1 5 b factor 1 5 labels c 1 4 u2265 5 c 10 14 ggplot df aes a c co
  • 带有预先计算值的 geom_boxplot

    过去 我已经能够使用 ggplot2 创建箱线图 方法是提供下须线 下分位数 中位数 上分位数和上须线以及 x 轴标签 例如 DF lt data frame x c A B min c 1 2 low c 2 3 mid c 3 4 to
  • Linux Sync() 等效 Windows API

    Linux sync API 会将内存中缓冲的任何数据写入磁盘 Windows 中是否有等效的调用 The 刷新文件缓冲区 http msdn microsoft com en us library windows desktop aa36
  • 使用 RGLPK 在 R 中进行梦幻足球线性编程

    长期倾听者第一次打电话给S O 我问的问题以前曾被问过 但我不相信我足够聪明来破译如何实施该解决方案 为此我深表歉意 这是我发现的问题的链接 R 多重整数线性规划中的约束 https stackoverflow com questions
  • 使用 sf 与多多边形几何体进行分组(使用 R)

    我有一个放在一起的自定义形状文件 当我一次绘制所有内容时 效果很好 但我想按某些变量进行分组来绘制特定形状的区域 例如 county region sales washoe 1 5 carson city 1 10 clark 2 15 h
  • 如何将嵌套模块与传单地图一起使用

    我正在尝试使用shiny模块来构建一个应用程序leaflet地图 然而 当我运行下面的代码时 地图无法正确渲染 它呈灰色 我希望发生的是user从侧面板中选择城市 并显示地图的相关部分 问题末尾有一个使用标准闪亮来说明的示例 我认为用户输入
  • 使用具有聚类数据的小鼠进行插补

    所以我正在使用mice用于估算缺失数据的包 我是插补新手 所以我已经到了一定程度 但遇到了陡峭的学习曲线 举一个玩具例子 library mice Using nhanes dataset as example df1 lt mice nh
  • 将 geom_text 与 ggplot2 中的 geom_vline 对齐

    I used vjust作为解决方法并详细阐述 通过尝试和错误可以接受的距离 但这有时非常耗时且变化 与字体大小和轴比例 有没有更好的方法来自动对齐示例中的文本 library ggplot2 ggplot data mtcars aes
  • 使用 ggplot2 将抖动应用于箱线图中的异常值数据

    您知道如何将抖动仅应用于箱线图的异常值数据吗 这是代码 ggplot data a aes x y a V8 geom boxplot outlier size 0 5 geom point data a aes x y a V8 54 c
  • R 中数据帧的稀疏矩阵

    我有一个稀疏矩阵 Formal class dgCMatrix package Matrix with 6 slots i int 1 37674 1836 2297 108 472 1735 1899 2129 2131 5 67 p i

随机推荐