Java загрузка JVM вся банка или ухо, если это только использует один класс от него?

Я следовал большинству ответов, которые были рекомендованы здесь. Сначала я получил следующую ошибку:

неустранимый: невозможно получить доступ к ' https://github.com/folder/sample.git/ ': schannel: next Ошибка InitializeSecurityContext: Неизвестная ошибка (0x80092012) - Функция отзыва не смогла проверить отзыв для сертификата.

Затем я попробовал следующую команду @Salim Hamidi

git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080

Но я получил следующую ошибку:

fatal: неспособен получить доступ ' https://github.com/folder/sample.git/ ': получен HTTP-код 407 от прокси-сервера после CONNECT

Это может произойти, если прокси-сервер не может проверить SSL сертификат. Поэтому мы хотим убедиться, что проверка ssl отключена (не рекомендуется для ненадежных сайтов), поэтому я сделал следующие шаги, которые были рекомендованы @Arpit, но с небольшими изменениями:

1. Сначала убедитесь, что чтобы удалить все предыдущие настройки прокси:

git config --global --unset http.proxy

2. Затем перечислите и получите содержимое gitconfig

git config --list --show-origin

3.Последнее обновите содержимое файла gitconfig, как показано ниже:

[http]
sslCAInfo = C:/yourfolder/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt
sslBackend = schannel
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
sslverify = false
[https]
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
sslverify = false

9
задан ojblass 24 July 2009 в 06:09
поделиться

4 ответа

JVM загружает только требуемые классы из Jar при вызове. Если приложению нужен класс, то будет загружен класс и все другие зависимые классы. Не уверен, но я полагаю, что это ответственность загрузчика классов, чтобы найти класс из пути к классам и загрузить.

7
ответ дан 4 December 2019 в 21:11
поделиться

Jar-файлы - это форма zip-файлов.

То, как они обрабатываются, сильно зависит от JRE.

Старые версии Sun JRE использовались для отображения памяти всего файла. Это выделит логическую память, но не обязательно приведет к загрузке каких-либо данных с диска. (32-разрядная Windows обычно не способна выделить 3 ГБ непрерывной памяти, хотя вы можете сделать это в других ОС.)

Я считаю, что текущее поведение - отображение памяти центрального каталога в задней части файла под Windows . В других ОС просто читается. Это контролируется #define в источнике.

JDK7, вероятно, сделает что-то еще.

Классы обычно загружаются лениво. Ресурсы каждый раз перечитываются. java.util.ResourceBundle кеширует.

2
ответ дан 4 December 2019 в 21:11
поделиться

Загрузчик классов по умолчанию загружает только то, что ему нужно, когда это необходимо. Если у вас есть JAR размером 10 МБ в вашем CLASSPATH и нужен только один файл .class, JVM загрузит этот класс только при первой попытке вашего кода получить к нему доступ. Байт-код .class помещается в перманентное пространство.

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

0
ответ дан 4 December 2019 в 21:11
поделиться

Это полностью зависит от JVM и загрузчика классов. Спецификация JVM указывает, что класс должен появиться для загрузки при первом активном использовании. Загрузчики классов могут загрузить некоторые классы раньше, чем предполагалось.

1
ответ дан 4 December 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: