gpt4 book ai didi

java - 为什么Java中会自动加载类数组?

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:20 25 4
gpt4 key购买 nike

我创建了一个java代理类,它只使用java.lang.Instrumentation.getAllLoadedClasses()检索一个类数组,我对其进行迭代,并打印它们的全名。

我使用此命令来运行此代理:

java -javaagent:<agent_jar> -jar <sample_jar>

<agent_jar>包含我的代理类,以及 <sample_jar>仅包含一个具有空 main 方法的类(因为我必须将 some 类/jar 传递给 java 命令)

所以,基本上,它打印了 JVM 加载的所有默认类,下面是名称中包含“String”和“Object”的类名的片段:

(输出格式: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

为什么有许多类的数组条目,例如。对象和对象[]?

最佳答案

Why are there array entries for many classes, eg. Object and Object[]?

它只是您应用程序的类,和/或 JVM 的默认应用程序启动器代码引用。

Object 类将被加载,因为其他其他类继承自它。当启动器使用反射来查找 main(String[]) 方法的 Method 对象时,最有可能使用 Object[] 数组类型。

当 JVM 自行引导时,幕后会发生一堆“黑魔法”。如果您确实需要知道,那么源代码就可用......

(您的代理的类和依赖项也可能会显示在列表中,但它们也可能由不同的类加载器加载。)

关于java - 为什么Java中会自动加载类数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41159598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com