64 位大型 malloc

2024-05-14

malloc() 失败的原因是什么,尤其是在 64 位中?

我的具体问题是尝试在 64 位系统上分配一大块 10GB RAM。 该机器有 12GB RAM 和 32GB 交换空间。 是的,malloc 是极端的,但是为什么它会成为一个问题呢?这是在带有 Intel 和 MSFT 编译器的 Windows XP64 中。 malloc 有时成功,有时不成功,大约 50%。 8GB malloc 总是有效,20GB malloc 总是失败。如果 malloc 失败,重复的请求将不起作用,除非我退出该进程并再次启动一个新进程(这样就有 50% 的成功机会)。没有其他大型应用程序正在运行。即使在重新启动后立即也会发生这种情况。

我可以想象,如果您用完了 32 位(或 31 位)可用的地址空间,则 malloc 在 32 位中会失败,这样就没有足够大的地址范围来分配给您的请求。

我还可以想象如果你用完了你的物理 RAM,malloc 会失败and你的硬盘交换空间。我的情况并非如此。

但为什么 malloc 会失败呢?我想不出其他原因。

我对一般的 malloc 问题比我的具体示例更感兴趣,无论如何我可能会用内存映射文件替换它。失败的 malloc() 比其他任何事情都更令人困惑......渴望了解您的工具而不是对基本原理感到惊讶。


malloc 尝试分配连续的内存范围,这最初将在实际内存中,这仅仅是由于交换内存的工作原理(至少据我记得)。很容易,您的操作系统有时无法找到连续的 10GB 内存块,并且仍然同时将所有需要实际内存的进程保留在 RAM 中(此时您的 malloc 将失败)。

您是否真的需要 10GB 的连续内存,或者您是否能够将存储类/结构包装在几个较小的块周围并以块的形式使用内存?这放松了巨大的连续要求,并且还应该允许您的程序将交换文件用于较少使用的块。

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

64 位大型 malloc 的相关文章

随机推荐

  • Parse::RecDescent 语法未按预期工作

    我所能做的就是 STRING PARAMS VARIABLE 和 FUNCNAME FUNCTION 似乎有问题 但我就是看不到它 use strict use Parse RecDescent RD ERRORS 1 Make sure
  • 两组数的最小公等和及组合

    我目前正在用 C 创建一个程序 该程序将查找两组数字的尽可能低的相等总和 您可以在其中根据需要多次重复这些数字 比如我有这两套 10 13 18 and 12 16 22 我能得到的最低金额是28 10 18 and 12 16 另一个例子
  • 使用 TFS 个人访问令牌克隆 Git 存储库

    我正在尝试以编程方式克隆 git 存储库 我的 ASP NET MVC 应用程序正在创建并启动一个进程 处理进程的代码工作正常 但是当尝试使用本地 TFS PAT 克隆 git 存储库时 身份验证失败 我无法使用 NTLM 或要求用户输入凭
  • JOOQ 忽略具有默认值的数据库列

    看来JOOQ完全忽略了数据库列的默认值 既不会更新 ActiveRecord 对象 也不会在 INSERT 时跳过此列 相反 它尝试将其设置为 NULL 这在 NOT NULL 列上失败 Example CREATE TABLE bug f
  • 可修改的右值和 const 右值有什么区别?

    string three return kittens const string four return are an essential part of a healthy diet 根据this https blogs msdn mic
  • 多个事件处理程序触发,为什么?

    我很难解决这个问题 我已经呆了三个小时了 但我仍然不明白为什么会这样 这是代码 private void Catagory SelectionChanged object sender SelectionChangedEventArgs e
  • 如何从 UILabel 创建图像?

    我目前正在 iPhone 上开发一个简单的类似 Photoshop 的应用程序 当我想要展平图层时 标签位于良好的位置 但字体大小不佳 这是我要展平的代码 UIGraphicsBeginImageContext CGSizeMake wid
  • 如何以 Rails 方式处理 JavaScript 事件(例如“link_to :remote”)?

    我正在使用 Ruby on Rails 4 我想以 Rails 方式处理 JavaScript 事件 也就是说 例如 假设我有以下内容 link to destroy article path article method gt delet
  • 将 Repeater Container.ItemIndex 传递给 Javascript 函数

    在 C Asp Net 中 我需要将中继器出现索引传递到 Javascript 函数中OnClientClick从 ASP 按钮按下 这是我的代码
  • Android L,使用 joda.time 库的异常

    该应用程序适用于所有设备 包括 nexus 5 和 nexus 7 在 Android L 预览版上运行相同的应用程序时 应用程序崩溃了 我一直在调试 并且调用 DateTime 构造函数发现了异常 public static String
  • 使用 DataBinding 测试片段时膨胀类 Fragment 时出错

    有人可以帮我解决这个问题吗 在我的测试中 我想检查登录按钮是否显示在起始页上 今天我已经为这个错误苦苦挣扎了一段时间 我不知道应该如何解决它 我在这里错过了什么 也许这个问题与这个问题有些相似 Espresso 测试失败 并显示 java
  • Vue 2 转换不起作用

    我不知道我的代码哪里出了问题 这应该是一个简单的过渡 当我单击按钮时 消息显示正确 但只是根本没有发生淡入淡出过渡
  • 在地图外部的 div 中加载 Fusion Tables InfoWindow 数据

    我希望有人可以帮助解决一个可能相当简单的查询 我在这里看到了一个有关尝试在不单击鼠标的情况下执行此操作的问题 但我想向 Fusion Table 地图上的标记添加一个事件侦听器 该事件侦听器将在地图下方的单独 div 中加载 infoWin
  • 按具有作业的组划分的 R 分位数

    我有以下 df group rep seq 1 3 30 variable runif 90 5 0 7 5 df data frame group variable 我需要 i 按组定义分位数 ii 将每个人分配到相对于其组的分位数 因此
  • 如何在 Python 中根据日期列绘制分类变量

    我有这样的数据 Date Fruit 2017 01 01 Orange 2017 01 01 Apple 2017 01 08 Orange 2017 01 09 Orange 2017 01 09 Apple 我想在一个图中按日期绘制橙
  • 如果另一列中的值为空,则删除重复项 - Pandas

    我拥有的 df Name Vehicle Dave Car Mark Bike Steve Car Dave Steve 我想从 名称 列中删除重复项 但前提是 车辆 列中的相应值为空 我知道我可以使用 df dropduplicates
  • 编写 VS Code 扩展时如何聚焦自定义视图?

    我需要有关 VS Code 扩展的帮助 我已经编写了一个工作正常的自定义视图 但是我想通过使用键盘快捷键或上下文菜单命令来激活 聚焦 进入该视图 我无法找到如何使用 VS code API 来实现这一点 context subscripti
  • Applescript 退出终端

    背景 我是一名 Mac 用户 用 PostScript 维护一个程序 Postscript 由 Adob e Distiller 解释 蒸馏 因此有时我想要第二次或第三次 Adob e Distiller 会话 要打开这样的实例 我有一个名
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 64 位大型 malloc

    malloc 失败的原因是什么 尤其是在 64 位中 我的具体问题是尝试在 64 位系统上分配一大块 10GB RAM 该机器有 12GB RAM 和 32GB 交换空间 是的 malloc 是极端的 但是为什么它会成为一个问题呢 这是在带