Набор инициализированных и готовых к использованию объектов. Когда системе требуется объект, он не создаётся, а берётся из пула. Когда объект больше не нужен, он не уничтожается, а возвращается в пул.
!!!
Не рекомендуется использовать объединение объектов с определенными языками, такими как Java, особенно для объектов, которые используют только память и не имеют внешних ресурсов. Распределение объектов относительно быстро на современных языках со сборщиками мусора; Большинство сборщиков мусора сканируют «живые» ссылки на объекты, а не память, которую эти объекты используют для своего контента. Это означает, что любое количество «мертвых» объектов без ссылок может быть отброшено с минимальными затратами. Напротив, сохранение большого количества «живых», но неиспользуемых объектов увеличивает продолжительность сбора мусора.
!!!
Java supports thread pooling via java.util.concurrent.ExecutorService and other related classes.
-
Когда создание объекта в начале работы и уничтожение его в конце приводит к большим затратам.
- Особенно заметно повышение производительности, когда объекты часто создаются-уничтожаются, но одновременно существует лишь небольшое их число.
-
Когда есть нескольким клиентам нужен один и тот же ресурс в разное время.
-
Создайте класс
ObjectPool
сprivate
массивом объектов внутри; -
Создайте
acquire и release
методы в классеObjectPool
; -
Убедитесь, что ваш ObjectPool - Singleton
+ | - |
---|---|
Повышает производительность приложения | JAVA использует сборщик мусора |
управляет соединениями и обеспечивает способ повторного использования и обмена ими | Существуют "ловушки" при использовании таких объектов |
Может предоставить ограничение для максимального количества объектов, которые могут быть созданы |
-
Фабричный метод может использоваться для инкапсуляции логики создания объектов. Однако после их создания он не управляет ими, Пул объектов отслеживает созданные им объекты.
-
Пулы объектов обычно реализуются как Singleton.