C语言中有动态内存,这指向通过 C 标准库中存在的一组函数在 C 编程语言中分配内存。其中之一是malloc,它指的是内存分配。在UNIX系统中有mmap,它指的是带有自己唯一I/O的内存映射系统。这两个(mmap和malloc)从表面上看将执行相同的功能,但进一步的审查揭示了一些差异。下面概述功能方面的区别。
差异
首先,重要的是要确定是否有任何证据表明可用内存存在显着窒息。这是通过测量程序的性能来完成的 内存管理 .
主内存分配接口是 malloc。这是 C 库中最大的一个。其中包含的部分管理代码是 mmap。 当 malloc 运行时,它会收集所有可用的系统设施。可以通过内核调动其他系统设施,这是系统用来确保内存分配令人满意的内存管理策略之一。但是,该过程并不简单,并且变得复杂的唯一原因是阻止人们创建简单的程序,这些程序可能会扰乱内存分配,从而造成性能不佳。
“mmap”是一个系统调用,它负责并请求内核在应用程序的地址中查找一个未使用的连续区域,该区域足够大以允许映射几页内存。还有创建虚拟内存管理结构,实际上不会导致段错误。
malloc 通常在大多数内存管理过程中运行。如果程序需要额外的内存,则从操作系统借用。mmap 利用上下文切换转换为内核土地。
malloc 最适合在系统上运行的任何应用程序中分配内存,而不是使用 mmap。这是默认情况下需要发生的事情,除非在可能允许的特殊情况下。
mmap 可用于加快应用程序给出的响应速度。但是,这是不可取的,因为它最终会牺牲页面的一些字节,以便应用程序可以平稳运行。尽管数据内容在开始时可能看起来很小,但在大量应用程序想要运行时进行推断实际上可能会进一步减慢系统速度。
在测量性能和资源使用情况后,应全面评估系统上运行的所有应用程序的数据使用情况。 如果可以显示正在运行的应用程序的生命周期,它可能会变得更好。
使用 mmap 分配内存的缺点是,在块中分配和释放数据的成本很高。这是因为数据被拆分为多个区域,并且还拒绝 mmap 进行系统调用。
mmap 比 malloc 更有利,因为 mmap 用完的内存会立即返回到操作系统。 除非存在数据段中断,否则永远不会返回 malloc 用完的内存。此内存被专门保留以重复使用。
mmap和malloc的区别
- “malloc”代表主内存分配点
- mmap 系统调用并请求内核在应用程序地址中查找未使用的区域,这些区域可以容纳多个内存页的映射;
- 不建议将 mmap 用于分配内存,因为它会拆分可用内存并且无法进行系统调用;
- mmap 相对于 malloc 的一个优点是内存的可用性,而不是重用的 malloc 内存。
mmap和malloc的区别
本文由网友:ogre22 投稿 欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:mmap和malloc的区别
本文链接:https://www.vsdiffer.com/vs/mmap-vs-malloc.html
免责声明:以上内容仅代表 网友:ogre22 个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。