zoukankan      html  css  js  c++  java
  • 内存池01

    c/c++ 的内存分配(通过malloc或new)可能很耗时。

    更糟糕的是,随着时间的流逝,内存(memory)将形成碎片,

    所以一个应用程序的运行会越来越慢,当它运行了很长时间和/或执行了很多内存分配释放操作的时候。

    特别是,你频繁的申请很小的一块内存,堆(heap)会变成碎片的。

    解决方案:你自己的内存池

    一个(可能的)解决方法是内存池(Memory Pool)。
    在启动的时候,一个”内存池”(Memory Pool)分配一块很大的内存,并将会将这个大块(block)分成较小的块(smaller chunks)。每次你从内存池申请内存空间时,它会从先前已经分配的块(chunks)中得到,而不是从操作系统。最大的优势在于:
    l 非常少(几没有) 堆碎片
    l 比通常的内存申请/释放(比如通过malloc, new等)的方式快
    另外,你可以得到以下好处:
    l 检查任何一个指针是否在内存池里
    l 写一个”堆转储(Heap-Dump)”到你的硬盘(对事后的调试非常有用)
    l 某种”内存泄漏检测(memory-leak detection)”:当你没有释放所有以前分配的内存时,内存池(Memory Pool)会抛出一个断言(assertion).
  • 相关阅读:
    Layui_2.x_上传插件使用
    Layui_1.0.9_分页实例_Java
    Jquery_如何扩展方法
    Linux_Crontab命令
    Linux_Centos7_设置MySql定时备份
    Linux_MySql_tar_安装(转)
    MySql_创建用户并赋予权限
    滚动条定位
    MySQL 存储过程创建表
    取两个时间差
  • 原文地址:https://www.cnblogs.com/wainiwann/p/6845785.html
Copyright © 2011-2022 走看看