代码参考leveldb实现内存池的方法,由于实际工作中暂时未用到过内存池,因此这里只是一个简单的内存池实现,后续有需要时,可以根据实际需求再对代码进行修改。arena.h#ifndef ARENA_H
#define ARENA_H
#include <stdio.
分类:
编程语言 时间:
2018-04-12 18:03:05
阅读次数:
174
boost的内存池实现了一个快速、紧凑的内存分配和管理器,使用它可以完全不用考虑delete释放问题。常用的boost内存池有pool、object_pool、singleton_pool。 1、pool pool是一个简单的内存池类,它的模板类型通常使用默认的参数,构造函数的参数用来指定每次分配内 ...
分类:
其他好文 时间:
2018-04-10 17:51:17
阅读次数:
170
Python内存管理机制 Python内存管理机制主要包括以下三个方面: 引用计数机制 垃圾回收机制 内存池机制 引用计数 举个例子说明引用是什么: 1 如上为一个简单的赋值语句,1就是对象,a就是引用,引用a指向对象1。 同理: 1 b也是对象1的引用。 通过内置函数id()返回对象的地址。 1 ...
分类:
编程语言 时间:
2018-04-08 00:16:48
阅读次数:
232
一、什么是内存泄漏 本质上讲,内存泄漏是当一块内存不再被应用程序使用的时候,由于某种原因,这块内存没有返还给操作系统或空闲内存池的现象。 二、几种常见的内存泄漏 1、意外的全局变量 一个未声明变量的引用会在全局对象中创建一个新的变量。在浏览器的环境下,全局对象就是window,也就是说: 实际上是: ...
分类:
Web程序 时间:
2018-04-01 21:58:35
阅读次数:
597
从某位大佬那里听到过一句话,学习一个开源代码最好的方式就是从他的test开始学习。鉴于此,在学习leveldb的时候,我选择从util中的arena模块开始学习。一、预备知识——内存池内存池是为了使内存分配的效率得到提升而采用的一种方法,并且很少产生堆碎片,可以避免内存泄漏。简单来说,就是每次申请的内存都放入一个容器当中,每次需要申请的内存先看是否可以从内存池中直接分配,如果不够,那么先申请一块新
分类:
数据库 时间:
2018-04-01 20:46:43
阅读次数:
215
名称 说明 Add 将两个值相加并将结果推送到计算堆栈上。 Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上。 Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且将结果推送到计算堆栈上。 And 计算两个值的按位"与"并将结果推送到计算堆栈上。 Arglist ...
分类:
编程语言 时间:
2018-03-20 15:09:11
阅读次数:
190
编程中常常看到将许多东西放在资源池中,在使用的时候可以提高效率。看起来和实现一个缓存类型,虽然原理简单,但是徒手写有总觉得缺点什么,所以在此总结一下 1.对象池 2.进程池和线程池 3.内存池 4.数据库连接池 etc ...
分类:
其他好文 时间:
2018-03-20 12:51:32
阅读次数:
174
目前为止我们学过静态内存和栈内存,分配在其中的对象由编译器自动创建和销毁, 静态内存:用来保存局部static对象、类的static数据成员、以及定义在任何函数体之外的变量。在对象使用之前分配,程序结束时销毁。 栈内存:用来保存定义在函数内的非static对象。仅在对象定义的程序块运行时存在,程序块 ...
分类:
编程语言 时间:
2018-02-20 23:57:06
阅读次数:
298
ngx_palloc.h ngx_palloc.c ...
分类:
其他好文 时间:
2018-02-16 10:57:40
阅读次数:
162
静态内存用来保存局部的static对象和类static数据成员,以及定义在任何函数之外的变量。除了静态内存和栈内存,每个程序还有一个内存池,这部分内存被称作自由空间或堆,用来存储动态分配的对象。动态内存的管理通过new和delete运算符实现。新的标准定义了两种智能指针类型来管理动态对象,share ...
分类:
其他好文 时间:
2018-02-07 15:01:02
阅读次数:
163