Заполнение пула объектов при загрузке JAR - PullRequest
0 голосов
/ 18 февраля 2010

У меня есть основной JAR, который обеспечивает некоторую функциональность и, следовательно, используется во многих других приложениях - настольных приложениях, веб-приложениях и т. Д. Теперь этот основной JAR поддерживает пул объектов, содержащий объекты, которые вычислительно дороги в создании.Пул объектов имеет фиксированный размер, и поэтому я создаю все объекты одновременно и заполняю пул.Что я хочу сделать, так это то, что всякий раз, когда приложение, использующее мой JAR-файл, загружается, пул объектов создается без знания приложением деталей такого пула.И даже если время загрузки приложения изменится из-за заполнения пула, но после того, как приложение пройдет этот этап, больше не будет никакого снижения производительности при создании таких тяжелых объектов позже.

Есть ли способ добиться этого?

1 Ответ

4 голосов
/ 18 февраля 2010

Единственный способ сделать что-то подобное, кроме добавления явных хуков в клиентских приложениях для вызова логики запуска, - это добавить статические инициализаторы в ваши классы для создания пула.

Статический инициализатор запускается, когда ваш класс впервые загружается JVM (до вызова любого кода в вашем классе), что не совсем детерминировано, но обычно, когда путь к коду, ссылающийся на ваш класс, сначала вызывается.

Я бы порекомендовал предоставить своего рода логику в логику запуска для запуска клиентских приложений, чтобы они могли точно управлять этим типом вещей, а не запускать логику запуска в непредсказуемое время.

...