1.相关概念在这篇笔记开始之前,我们需要对以下概念有所了解。1.1 操作系统中的栈和堆注:这里所说的堆和栈与数据结构中的堆和栈不是一回事。我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构:栈区(stack):由系统自动分配,一般存放函数参数值、局部变量的值等。由编译器自动创建与释放...
分类:
其他好文 时间:
2015-01-13 12:26:44
阅读次数:
346
1.系统开机过程: 1)加载BIOS的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置 2)读取并执行第一个开机装置内MBR的bootLoader(亦即grub,spfdisk等程序) 3)依据bootloader的设定加载Kernel,Kernerl会开始侦测硬件信息与加载驱动程序 4)在硬件驱动成功之后,..
分类:
系统相关 时间:
2015-01-13 10:45:32
阅读次数:
229
常用的内核内存分配函数
1)_get_free_pages是最原始的内存分配方式,至二级从伙伴系统中获取原始页框,返回值为第一个页框的起始地址。_get_free_pages在实现上只是封装了alloc_pages函数,而alloc_pages分配的长度为1
2)Kmem_cache_alloc是基于slab分配器的一种内存分配方式,适用于反复分配释放同...
分类:
系统相关 时间:
2015-01-10 08:54:01
阅读次数:
509
一:Memcached 内存分布机制 (1)把内存分配成slab 和不同大小的chunk。在跟据键值的大小在选择对应的chunk。这样可以减少最小的内存浪费,内存浪费是不可避免的。[把内存划分成若干个slab仓库,在把每个仓库划分成不同尺寸的小块,需要存内容时,判断内容的大小为其选取合理的仓库。]....
分类:
系统相关 时间:
2015-01-07 16:31:46
阅读次数:
218
C++ 多继承和虚继承的内存布局(Memory Layout for Multiple and Virtual Inheritance)...
分类:
编程语言 时间:
2014-12-31 10:05:21
阅读次数:
260
拷贝构造函数
如果没有定义拷贝构造函数,那么编译器会自动生成一个拷贝构造函数,但是这个拷贝构造函数是有一定限度的。
一般来说这个拷贝构造函数是按照位直接拷贝的,但是在有些情况下这种初始化是有问题的,在特殊的四种情况下是有问题的,在有问题的情况下,可以举例说明。
如果一个有多态性质的对象,子类赋值给父类,调用了拷贝构造函数,这个时候就需要给父类的虚拟函数表重新分配,使得虚拟函数表和子类不是同一...
分类:
其他好文 时间:
2014-12-27 20:29:38
阅读次数:
161
Linux开机流程
一、概念
1、boot loader: 领导装载程序,常用的有(Grub, spfdisk)
2、Grub: 是一个多操作系统启动管理器,开机时领导不同系统,windows linux等
二、开机的流程
1、加载BIOS(basic input output system)的硬件信息,并进行自我测试
2、读取并执行第一个开机装置内MBR(主引导记录扇区)的boo...
分类:
系统相关 时间:
2014-12-21 18:03:10
阅读次数:
366
※结构体和类之内存分布1、空类的大小空类:其实空类至少会占用1个字节的长度。2、字节对齐在为结构体和类中的数据成员分配内存时,结构体中的当前数据成员类型长度为M,指定对齐值为N,那么实际对齐值位q=min(M,N),其成员的地址安排在q的倍数上。vc6.0缺省对齐8个字节sShort占用2个字节,所...
分类:
编程语言 时间:
2014-12-11 23:45:02
阅读次数:
204
这篇说说如何计算Java对象大小的方法。之前在聊聊高并发(四)Java对象的表示模型和运行时内存表示 这篇中已经说了Java对象的内存表示模型是Oop-Klass模型。
普通对象的结构如下,按64位机器的长度计算
1. 对象头(_mark), 8个字节
2. Oop指针,如果是32G内存以下的,默认开启对象指针压缩,4个字节
3. 数据区
4.Padding(内存对齐),按照8的倍数...
分类:
编程语言 时间:
2014-12-09 15:50:42
阅读次数:
316