Хорошо, вопрос может казаться глупым, но я все равно спрашиваю его.
После долгих часов работы над запуском проекта Spring + BlazeDS я обнаружил, что у меня возникли проблемы с моим проектом в результате отсутствия правильных зависимостей для Spring и т.д. Были потеряны .jars из моей папки WEB-INF/lib, да, глупо меня.
Через некоторое время мне удалось получить все файлы .jar, где они принадлежат, и на них приходит колоссальный 12,5 МБ, и там их больше 30! Что касается меня, но это, вероятно, и, надеюсь, не стоит беспокоиться.
Как работает Java с точки зрения этих JAR файлов, они занимают довольно много места на жестком диске, принимая во внимание, что он сжал и скомпилировал исходный код. Таким образом, на самом деле можно быстро заполнить много оперативной памяти и в одно мгновение.
Мои вопросы:
Является ли Java загружать весь файл .jar в память, если скажем, например, что класс в том, что .jar создается? Что о вещах, которые в .jar никогда не используются.
Делать .jars как-то кэшировать, для оптимизации производительности приложений?
Когда загружается один .jar, я понимаю, что эта вещь сидит в памяти и доступна в нескольких HTTP-запросах (т.е. для срока службы экземпляра сервера), в отличие от PHP, где объекты создаются "на лету" с каждым запросом, верно ли это предположение?
При использовании Spring, я думаю, мне пришлось включить все эти fiddly.jars, разве мне не лучше просто использовать родную Java, скажем, по крайней мере, и решение ORM, такое как Hibernate?
До сих пор Spring просто занимал дополнительную настройку времени, дополнительное пространство на жестком диске, дополнительную память, потребление процессора, поэтому я обеспокоен тем, что инфраструктура будет стоить слишком большой производительности приложения, чтобы получить, например, IoC с моим сервером BlazeDS.
По-прежнему должен прийти ORM, модульная тестовая среда и биты и куски здесь и там. Это просто так легко раздуть проект быстро и безответственно легко.
Где я рисую линию?