计算密集型(compute-intensive)应用瓶颈可能是CPU、内存或者硬盘等,但数据密集型(data-intensive)应用的瓶颈通常来自数据量、数据复杂性以及数据的变更速度。
计算密集型(compute-intensive)应用瓶颈可能是CPU、内存或者硬盘等,但数据密集型(data-intensive)应用的瓶颈通常来自数据量、数据复杂性以及数据的变更速度。
如下图所示,对于每个程序所分配的内存由很多部分组成,通常称之为“段”(segment)。
文本段(text)包括进程运行的程序机器语言指令。文本段具有只读属性,以防止进程通过错误指针意外修改自身指令。
初始化数据段(BSS)包括为未进行显式初始化的全局变量和静态变量。
对于初始化和未初始化数据段即用户初始化数据段(user-initialized data segment)和零初始化数据段(zero-initialized data segment)。
栈(stack)是一个动态增长和收缩的段,由栈帧(stack frames)组成。系统会为每个当前调用的函数分配一个栈帧。栈帧中存储了函数的局部变量(所谓自动变量)、实参和返回值。
堆(heap)是可在运行时(变量)动态进行内存分配的一块区域。堆顶端成为program break。