内存管理:动态内存分配

在进程的地址空间中,代码区、常量区、全局数据区的内存在程序启动时就已经分配好了,它们大小固定,不能由程序员分配和释放,只能等程序运行结束由操作系统回收,这称为静态内存分配

栈区和堆区的内存在程序运行期间可以根据实际需要来分配和释放,不用在程序刚启动就备足所有内存。这称为动态内存分配

堆和栈的区别

栈区内存由系统分配和释放,不受程序员控制。程序启动时会为栈区分配一块大小适当的内存,当函数中有较大的局部数组时,编译器就会在函数代码中插入针对栈的动态内存分配函数,这样函数被调用时才分配内存,不调用就不分配。所以栈内存的分配效率要高于堆。

堆区内存完全由程序员控制,非常灵活。

池化技术

线程池的主要思想:先启动若干数量的线程,让它们处于睡眠状态,当接收到客户端的请求时,唤醒池中某个睡眠的线程,让它来处理客户端的请求,当处理完这个请求,线程又进入睡眠状态。

所谓池化技术,就是进程先向操作系统申请过量的资源,然后自己管理,以备不时之需。之所以要申请过量的资源,是因为每次申请该资源都有较大的开销,不如提前申请好了,这样使用时就变得非常快捷。

猜你喜欢

转载自www.cnblogs.com/xiaobaizzz/p/12343459.html