java 或 C++ 中的堆管理器如何跟踪线程或进程使用的所有内存位置?

2024-01-30

我想了解堆管理器的数据结构Java或操作系统(如果是 C++ 或 C)会跟踪线程和进程使用的内存位置。一种方法是使用对象和内存地址的映射以及内存起始地址和内存中对象的大小的反向映射。 但在这里它将无法满足新的内存请求O(1)时间。有没有更好的数据结构来做到这一点?


请注意,非托管语言将通过系统调用分配/释放内存,通常不会自行管理内存。尽管如此,无论抽象级别如何(操作系统到运行时),都必须处理这个问题:

一种方法称为伙伴块分配,通过以下示例很好地描述了维基百科 http://en.wikipedia.org/wiki/Buddy_memory_allocation。它本质上跟踪不同大小(通常是 2 的倍数)的内存空间的使用情况。这可以通过多个具有巧妙索引的数组来完成,或者更直观地使用二叉树来完成,每个节点告诉某个块是否空闲,同一级别上的所有节点代表相同大小的块。

这会受到内部碎片的影响;随着事情的发展和变化,您的数据可能会分散而不是有效地整合,从而使其更难以适应大数据。这可以通过更复杂的方式来应对,动态系统 http://en.wikipedia.org/wiki/Dynamic_allocation#Dynamic_memory_allocation,但好友块的优点是简单。

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

java 或 C++ 中的堆管理器如何跟踪线程或进程使用的所有内存位置? 的相关文章

随机推荐

  • 以编程方式复制 WPF 控件

    我有一个选项卡控件 当用户想要添加到它时 我想复制几个已经存在的元素 而不仅仅是引用它们 现在 到目前为止我只是硬复制了我想要的变量 但我在自动调整大小代码中出现了裁剪器 也就是说 在调整窗口大小时 复制的元素明显落后于原始元素 此外 随着
  • HTML5 视频暂停时显示海报图像或暂停按钮?

    您好 我正在为 iPad 编写一个本地网站 并且有一个没有控件的视频 点击时会播放和暂停 视频暂停时能否显示海报图片 或者在中间显示一个暂停按钮 这是我用于播放和暂停的代码
  • Pandas - Groupby 数据帧存储为数据帧而不聚合

    我是 Pandas 的新手 我在这里阅读了很多文档 帖子和答案 但我一直无法辨别出实现我的目标的好策略 抱歉 如果它已经得到解答 我找不到它 这是我所拥有的 df key A B A B value 2 2 1 1 df pd DataFr
  • Django 有办法打开 HTTP 长轮询连接吗?

    保持连接打开 直到事件发生 看一下姜戈 彗星 推 万恶之中最小的 https stackoverflow com questions 4310706 django comet push least of all evils or Pytho
  • 如何在 Android 上使用带有 c 和 java api 的库项目

    我在谷歌 android ndk 组中问过这个问题 但没有得到任何答案 我正在尝试通过单击在独立项目中构建通用模块 是图书馆 是日食 该项目同时提供c api 和java api 虽然其中一些 api 是相关的 这意味着将它们分开不是一个好
  • 如何简单地将数据帧的两列相乘? [复制]

    这个问题在这里已经有答案了 我的输入是 a lt c 1 2 3 4 b lt c 1 2 4 8 df lt data frame cbind a b 我的输出应该是 a lt c 1 2 3 4 b lt c 1 2 4 8 d lt
  • 在 Visual Studio 本地使用假域名,无需直接修改主机文件

    我有一个在这里运行的应用程序http 本地主机 10205 http localhost 10205 但我需要它在本地运行http somethingelse com http somethingelse com 这也需要在其他计算机上进行
  • 有没有办法在 Windows 中的 basic_iostream 上获得非锁定流插入/提取?

    我是一名 C 开发人员 主要在 Solaris 和 Linux 上进行编程 直到最近我被迫创建一个针对 Windows 的应用程序 我一直在使用基于 TCP 套接字支持的 C I O 流的通信设计 该设计基于单个线程连续从流中读取 大部分时
  • 将一个单词转换为另一个单词的最短路径

    对于数据结构项目 我必须找到两个单词之间的最短路径 例如 cat and dog 一次仅更改一个字母 我们得到了一个拼字游戏单词列表 用于寻找我们的路径 例如 cat gt bat gt bet gt bot gt bog gt dog 我
  • Cakephp 在 HABTM 关系中保存额外的属性

    我有三个模型主题 颜色和主题颜色 映射具有不同颜色的主题 结构如下 主题 id 名称 属性 图像 颜色 ID 名称 代码 图像 ThemeColor 主题id 颜色id 预览 例如 预览 gt x 主题 具有 a b c 颜色及其相关图像
  • 如何在asp.net中显示HTML表格中的数据

    我正在编写一个 ASP NET 页面 它从数据库读取数据并需要将其显示在 HTML 表中 我不想使用 gridView 这是我尝试使用 c 的代码 protected void Page Load object sender EventAr
  • ASP.NET 2.o 页面的 jQuery 登录模式弹出窗口

    我有一个 ASP NET 网页 不是 MVC HomePage aspx 和另一个页面 PRiceList aspx 我的主页中有一个登录功能 因此 当用户登录该网站时 他们可以转到Pricelist aspx 页面可以轻松地使用主页中的链
  • 在mlr和parallelMap中可以并行化多个级别吗?例如 mlr.tuneParams 和 mlr.benchmark

    我正在使用多个学习器 大约 15 个不同的学习器 运行 mlr 基准测试 并使用 irace 调整控件进行嵌套重采样 我的问题是 是否可以在parallelMap 上运行两个并行化级别 如果我使用 mlr benchmark 级别 则速度更
  • MS-SQL 中是否有等效的“START AT”?

    一些数据库支持以下命令 SELECT TOP 10 START AT 10 FROM table 本质上 我需要提取前 10 条记录 然后是下 10 条记录 然后是下 10 条记录 等等 也许还有另一种方法可以做到这一点 但在过去 我对支持
  • 添加类型参数约束以防止抽象类

    如果抽象类的具体实现没有默认构造函数 是否可以将类型参数限制为这些具体实现 例如 如果我有 public abstract class Animal private Animal public Animal string name publ
  • Android 视图在某些设备上的边框问题

    已解决的主题 回答如下 一些用户报告了某些 Android 组件 例如警报弹出窗口或 editTexts 的边框对齐问题 这种情况发生在 Samsung Galaxy Apollo 200x400 和 HTC Pro Touch 480x6
  • 如何使用 C# 从安全令牌获取信息

    我需要让我的应用程序的用户能够使用他们的个人 USB 安全令牌签署批准 我已成功签署数据 但无法获取谁的令牌已用于执行此操作的信息 这是我到目前为止的代码 CspParameters csp new CspParameters 1 Safe
  • 如何在不获取空对象的情况下进行 JSON.stringify 和 JSON.parse?

    我问这个问题的原因是因为我想为我的对象使用 LocalStorage 您可能知道 使用 LocalStorage 时 您必须对对象进行 JSON stringify 然后将它们解析回 javascript 对象 我正在尝试使用方法 JSON
  • AES 在 CryptoJS 中加密并在 Coldfusion 中解密

    我们有一个用 Coldfusion9 编写的静默登录服务 它接受来自外部系统的加密字符串 然后根据商定的算法 编码设置进行解密 多年来 这在运行 ASP JAVA PHP 的系统上一直没有问题 但我们现在有一个客户别无选择 只能使用 Cry
  • java 或 C++ 中的堆管理器如何跟踪线程或进程使用的所有内存位置?

    我想了解堆管理器的数据结构Java或操作系统 如果是 C 或 C 会跟踪线程和进程使用的内存位置 一种方法是使用对象和内存地址的映射以及内存起始地址和内存中对象的大小的反向映射 但在这里它将无法满足新的内存请求O 1 时间 有没有更好的数据