Skip to content

Latest commit

 

History

History
69 lines (47 loc) · 5.07 KB

Object_Pool.md

File metadata and controls

69 lines (47 loc) · 5.07 KB

Объектный пул

UML

Набор инициализированных и готовых к использованию объектов. Когда системе требуется объект, он не создаётся, а берётся из пула. Когда объект больше не нужен, он не уничтожается, а возвращается в пул.

!!!

Не рекомендуется использовать объединение объектов с определенными языками, такими как Java, особенно для объектов, которые используют только память и не имеют внешних ресурсов. Распределение объектов относительно быстро на современных языках со сборщиками мусора; Большинство сборщиков мусора сканируют «живые» ссылки на объекты, а не память, которую эти объекты используют для своего контента. Это означает, что любое количество «мертвых» объектов без ссылок может быть отброшено с минимальными затратами. Напротив, сохранение большого количества «живых», но неиспользуемых объектов увеличивает продолжительность сбора мусора.

!!!

Java supports thread pooling via java.util.concurrent.ExecutorService and other related classes.

Применимость

  • Когда создание объекта в начале работы и уничтожение его в конце приводит к большим затратам.

    • Особенно заметно повышение производительности, когда объекты часто создаются-уничтожаются, но одновременно существует лишь небольшое их число.
  • Когда есть нескольким клиентам нужен один и тот же ресурс в разное время.

Шаги реализации

  1. Создайте класс ObjectPool с private массивом объектов внутри;

  2. Создайте acquire и release методы в классе ObjectPool;

  3. Убедитесь, что ваш ObjectPool - Singleton

Преимущества и недостатки

+ -
Повышает производительность приложения JAVA использует сборщик мусора
управляет соединениями и обеспечивает способ повторного использования и обмена ими Существуют "ловушки" при использовании таких объектов
Может предоставить ограничение для максимального количества объектов, которые могут быть созданы

Отношения с другими паттернами

  • Фабричный метод может использоваться для инкапсуляции логики создания объектов. Однако после их создания он не управляет ими, Пул объектов отслеживает созданные им объекты.

  • Пулы объектов обычно реализуются как Singleton.