Object Pool giữ sẵn một tập object đã khởi tạo để tái sử dụng thay vì liên tục tạo rồi huỷ — đáng dùng khi object tốn kém lúc khởi tạo.
Ứng dụng phổ biến nhất là database connection pool: thay vì mở connection mới cho mỗi request, pool giữ sẵn N connection.
js
// Node.js với pg — pool tự quản lý vòng đời connection
const pool = new Pool({ max: 10, min: 2, idleTimeoutMillis: 30000 })go
// Go dùng sync.Pool cho object được cấp phát liên tục
var bufPool = sync.Pool{
New: func() interface{} { return new(bytes.Buffer) },
}- Dùng khi: object tạo tốn kém (DB connection, thread, buffer lớn) và ứng dụng có throughput cao.
- Không dùng khi: object khởi tạo nhanh nên overhead của pool lớn hơn lợi ích; pool quá nhỏ gây contention; hoặc object có state phức tạp, khó reset sạch.