При запуске java-программы с использованием команды java вы можете указать опцию verbose с -verbose, которая позволяет вам проверять, когда загружаются классы. Например:Указывает, когда JVM Verifier Проверяет классы
java -verbose Test | grep "file:"
[Loaded Test from file:/Users... ]
[Loaded C1 from file:/Users... ]
[Loaded A1 from file:/Users... ]
[Loaded B1 from file:/Users...]
[Loaded C2 from file:/Users...]
Есть ли способ узнать, когда происходит эта проверка? Проверка класса не обязательно выполняется сразу после его загрузки. Для примера что-то, как это было бы идеально:
java -verbose Test | grep "file:"
[Loaded Test from file:/Users... ]
[Loaded C1 from file:/Users... ]
[Loaded A1 from file:/Users... ]
[Loaded B1 from file:/Users...]
[Verified C1]
[Loaded C2 from file:/Users...]
[Verified C2]
и т.д.
Чтобы защититься от тех, кто «Вам не нужно это», «Почему вы хотите, чтобы сделать это» ответы. Его просто из чистого интереса и по-прежнему стоит вопроса.
Что с [все] (http://stackoverflow.com/questions/10562876/responsabilities-of-jvm-bytecode-verifier) verifier вопросы [внезапно] (http://stackoverflow.com/questions/10563569/jvm-verifierification-when-is -это исполненный)? Есть ли какие-то викторины где-то или что-то еще? –
Выполняется, когда класс загружается и имеет право использовать его во время процесса связывания. Спецификация JVM не указывается при верификации, но она должна иметь место перед инициализацией класса. AFAIK нет тривиального способа изучить этот шаг кросс-платформенным способом. –
А как насчет кросс-платформенного способа? У меня есть доступ к окнам linux и osx –