Сколько файлов JAR загружается в память - PullRequest
0 голосов
/ 28 декабря 2018

Я программирую на scala, когда я пишу простую программу "println (" hello world ")" и использую 'sbt package', чтобы опубликовать ее в файл jar, размер файла составляет всего 4 КБ, но это не помогаетя, так как файл JAR не будет работать без библиотеки Scala.Поэтому после поиска в Интернете я обнаружил sbt-сборку, которая упаковывает все, включая библиотеку scala, в одну «толстую банку», но размер получаемого файла jar превышает 13 МБ. Поэтому мой вопрос заключается в том, когда файлы jar исполняются или к ним обращается весь файл jar загружаетсяв память, или только необходимые данные и функции будут загружены в память по мере необходимости?

1 Ответ

0 голосов
/ 28 декабря 2018

Это поведение не зависит от того, как приложение было упаковано, но это зависит от загрузчика классов (как следует из названия) для загрузки и выгрузки классов из памяти.

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

Конечно, вы можете определить свой загрузчик пользовательских классов и сделатьчто вы хотите:)

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

...