内存池,进程池,线程池

时间:2021-05-13 18:07:18

内存池

在使用new、malloc在堆区申请一块内存的时候,由于每次申请的内存大小不一样就会产生很多内存碎片,不好管理和浪费。

内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够用再 继续申请新的内存。这样做的优点就是尽量避免了内存碎片,使得内存分配效率得到提升。

进程池和线程池

在面向对象编程中,对象的创建于析构都是一个较为复杂的过程,比较耗费时间,所以为了提高程序的运行效率尽可能减少创建销毁对象的次数,所以我们可以创建一个进程池,预先放一些进程进去,要用的时候就直接调用,用完之后再把进程归还给进程池,省下创建删除进程的时间,不过当然就需要额外的开销,利用线程池与进程池可以是管理进程与线程的工作交给系统管理。

线程池主要用于:

1.需要大量的线程来完成任务,且完成任务的时间比较短。比如web服务器完成网页请求这样的任务,使用线程池技术是非常合适的。因为单个任务小,而任务数量巨大。对于长时间的任务,线程池没明显优势,比如Telnet链接请求,Telnet会话时间比线程的创建时间大多了。

2.对性能要求苛刻的应用,比如要求服务器迅速响应客户请求

3.接受突发性的大量请求,但不至于使服务器因此产生大量线程的应用。