Ответ 1
Как указано в Java How To... -javaagent: Option:
Агент - это просто перехватчик перед вашим основным методом, выполненный в той же JVM и загружается одним и тем же системным загрузчиком классов, и управляемый одной и той же политикой безопасности и контекстом.
Название вводит в заблуждение, так как слововой агент обычно предлагает что-то работающее удаленно и отдельно от основного объекта. Но получается, что java-агент используется как -javaagent: намного проще чем это.
В одном приложении Java может быть любое количество агентов, используя -javaagent: опция любое количество раз. Агенты вызывается в том же порядке, который указан в параметрах.
Каждый агент может также принимать аргументы, зависящие от строки. Я предполагаю, что причина почему мы должны использовать этот параметр несколько раз для нескольких агентов. В противном случае мы могли бы просто сделать что-то вроде:
-javaagent agent1.jar:agent2.jar
что неверно.
Таким образом, поставив агент профилировщика (например, YourKit, JIP и т.д.), прежде чем ваш собственный агент предоставит вам контроль отладки.