池化技术
产生及目的
由于在实际应用中,分配内存、创建进程、线程都会涉及到一系列系统调用,而系统调用需要导致程序从用户态切换到内核态,是非常耗时的操作。
因此,当程序中需要频繁的进行内存申请释放,进程、线程创建销毁等操作时,通常会使用内存池、进程池、线程池技术来提升程序的性能。通过对连接或线程的复用,并对复用的数量、时间等进行控制,从而使得系统的性能和资源消耗达到最优状态。
概念
池化技术是一种常见的编程技巧, 把一些能够复用的东西(比如说数据库连接、线程)放到池中,避免重复创建、销毁的开销,从而极大提高性能。(提前保存大量资源, 以备不时之需)
常见的池化技术:
- 线程池
- 内存池
- 数据库连接池
- 对象池
共同特点: 把"昂贵的", “费时的"的资源维护在一个特定的"池子里面”, 并且规定其规模, 阻塞队列等配置, 进行回收, 监控等一系列的统一管理
线程池
类似于操作系统中的缓冲区,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当需要一个开辟一个线程去做具体的工作时,就会唤醒线程池中的某一个睡眠线程,让它去做具体工作,当工作完成后,线程又处于睡眠状态,而不是将线程销毁。
内存池
内存池是指程序预先从操作系统申请一块足够大内存,此后,当程序中需要申请内存的时候,不是直