Большая война портлетов занимает память, вызывая проблемы с производительностью? - PullRequest
2 голосов
/ 04 октября 2010

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

Я пытаюсь понять, почему это так, и я не нашел ничего, что объясняло бы это так, как я понял.Может быть, я ищу неправильные термины, поэтому я не нахожу много информации.Может кто-нибудь объяснить, что именно происходит, когда создается экземпляр портлета и действительно ли эти файлы начинают занимать память?

1 Ответ

2 голосов
/ 07 октября 2010

Краткий ответ: да, развертывание файла войны с большим количеством jar-файлов «может» привести к снижению производительности.Не имеет значения, содержит ли война портлет или стандартное веб-приложение.Но, по моему мнению, вам не следует беспокоиться об этом преждевременно, потому что есть простые решения этой проблемы.

Когда портлет или любое webApp загружается на сервер, он загружает классы основного фляги в «Постоянный»генерация "область кучи (память, назначенная процессу Java) веб-сервера.В этом регионе хранится код, который выполняется.Когда эти классы используют код из других jar-файлов, их код также загружается в этот регион.Если эти регионы заполнены, вы получите исключение OutOfMemoryError.

Решения для ваших проблем просты:

  1. Выделите больше памяти для вашей памяти (параметр -XmxJVM)

  2. Если у вас есть несколько файлов .war с одинаковыми файлами jar, удалите эти файлы из файлов war и поместите их в каталог, где находятся все общие библиотекивеб-сервер расположены.Расположение этого каталога зависит от используемого вами сервера веб-приложений.

Поэтому вам не следует беспокоиться об этой проблеме, поскольку она имеет решение.

ЭтоPDF http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf объясняет, как работает управление памятью в Java.Это относится к обычным Java-приложениям и веб-приложениям.

...