Я создал класс агента java, который просто использует java.lang.Instrumentation.getAllLoadedClasses() для извлечения массива классов, по которым я повторяю и печатаю их полные имена.Почему массив классов загружается автоматически в Java?
Я использовал эту команду, чтобы запустить этот агент:
java -javaagent:<agent_jar> -jar <sample_jar>
<agent_jar>
содержит мой класс агента и <sample_jar>
содержит только класс с пустым основным методом (так как я должен пройти некоторые класс/jar к команде java
)
Итак, в основном, он печатал все классы по умолчанию, загружаемые JVM, и вот фрагмент для имен классов, содержащих «имена» и «объект» в их именах:
(Выходной формат: Class.getName() - Class.getTypeName())
java.util.Objects - java.util.Objects
[Ljava.lang.String; - java.lang.String[]
java.lang.String$CaseInsensitiveComparator - java.lang.String$CaseInsensitiveComparator
[Ljava.io.ObjectStreamField; - java.io.ObjectStreamField[]
java.io.ObjectStreamField - java.io.ObjectStreamField
[Ljava.lang.Object; - java.lang.Object[]
java.lang.StringBuilder - java.lang.StringBuilder
java.lang.StringBuffer - java.lang.StringBuffer
java.lang.AbstractStringBuilder - java.lang.AbstractStringBuilder
java.lang.reflect.AccessibleObject - java.lang.reflect.AccessibleObject
java.lang.String - java.lang.String
java.lang.Object - java.lang.Object
Почему существует массив вхождений для многих классов, например. Объект и объект []?
Ссылка http://stackoverflow.com/questions/3442090/java-what-is-this-ljava-lang-object – Guy
Просто потому, что ваш 'main' пуст, это не значит, что JVM ничего не делает * ничего *. Очевидно, что нужно загружать некоторые вещи, чтобы иметь возможность загружать ваш класс и запускать основной метод. – Tom