Advertisement

《 windows 堆内存剖析 》

阅读量:

我们相信大多数同学在内存方面的认识仍停留在较为基础的概念层面。如32位应用程序堆内存的地址范围是什么样的?操作系统如何帮助我们寻找到一片连续的内存空间?这些都是什么样的现象呢?应用层是否需要自行手动实现一个内存在线程中的池子呢?假如你对这些问题还是一知半解的话,请问您是否愿意花费时间深入学习这些底层知识点呢?这样做对于夯实您的基础知识是很有必要的。

在现代计算机系统中存在一种特殊的内存分配与回收机制——堆(Heap),其主要功能是实现程序运行期间对动态资源的需求进行合理分配与回收。不同类型的进程根据具体的应用场景会选择不同的内存管理策略作为基础支持体系。常见的几种包括但不限于:基本工作栈(Basic Stack)、标准工作台栈(Standard CRT Stack)以及自定义应用栈(Application-Specific Heap)。这些基本结构均建立在操作系统的底层支持之上,并通过高级别资源调度系统协同运作。当现有策略无法满足需求时,则会进一步依赖于虚拟内存机制来扩展资源。

默认的进程堆 :进程在启动时,会利用默认进程堆申请一段内存。

CRT堆 :当应用程序主动调用new、malloc等内存管理接口时,系统会自然地调用CRT堆。

应用程序特定堆:当一个程序通过操作系统提供的接口(如HeapCreate)申请一段独立于其他内存区域的堆栈存储空间时,

全部评论 (0)

还没有任何评论哟~