一个简单程序的类加载流程

一个简单程序的类加载流程,第1张

一个简单程序的类加载流程

您将

Sample
按照以下方式运行课程

> java Sample

如果需要一点魔术,请查看

-verbose:class
option 的输出,然后看到大量的以下行。

[Opened C:jdk1.6.0_14jrelibrt.jar][Loaded java.lang.Object from C:jdk1.6.0_14jrelibrt.jar][Loaded java.io.Serializable from C:jdk1.6.0_14jrelibrt.jar][Loaded java.lang.Comparable from C:jdk1.6.0_14jrelibrt.jar]......[Loaded java.security.cert.Certificate from C:jdk1.6.0_14jrelibrt.jar][Loaded Sample from file:/D:/tmp/][Loaded java.lang.Shutdown from C:jdk1.6.0_14jrelibrt.jar][Loaded java.lang.Shutdown$Lock from C:jdk1.6.0_14jrelibrt.jar]

您会看到从中

jrelibrt.jar
加载了一堆类,远远早于由
Bootstrap
类加载器(或Primordial)加载您的类。这些是运行因此由Bootstrap加载的Java程序的先决条件。

另一组罐子由

Extension
类加载器加载。在此特定示例中,不需要lib中的任何类,
jrelibext
因此不会加载它。但是,专门为扩展类加载器分配了从扩展库加载类的任务。

编辑: 除了标准平台Java类之外,Sun / Oracle还提供了一组jar,用于 扩展平台的核心API
。放在扩展lib文件夹中的jar会自动放置在classpath中,因此不需要显式包含在classpath中。这是关于同一主题的不错的官方文章。

最后,在Bootstrap和Extension完成加载后,

Sample
Application
类加载器加载您的类。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5499532.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存