5. 先有鸡还是先有蛋

目录

  • 1. 引言
  • 2. 理论
  • 3. 验证
    • 3.1 如何验证ClassLoader类是由启动类加载
    • 3.2 如何验证扩展类加载器,系统类加载器也是由启动类加载器加载
  • 4. 总结

1. 引言

在之前的文章中,我们可以知道,不管我们项目中使用的类还是Jvm提供的jar包,都是由类加载器加载的,也就是说java类都是类加载器加载,但是不管是扩展类加载器还是系统类加载器,都是类ClassLoader的子类,他们又是谁加载的呢? 到底是先有的类加载器还是先加载类的呢?

2. 理论

  1. 内建于JVM中的启动类加载器会加载ClassLoader以及其他java平台类。
    当JVM启动时,启动类加载器将会运行,加载扩展类加载器,以及系统类加载器。
  2. 启动类不是Java类(C++编写),属于特定平台的机器指令,负责开启整个加载的过程

3. 验证

3.1 如何验证ClassLoader类是由启动类加载

暂时没看到博客有详细介绍 启动类加载器是怎么加载ClassLoader的,暂时通过理论启动类加载器加载的资源目录中存在ClassLoader所在jar包(rt包)来验证,然后使用一下demo测试

public static void main(String[] args) {
    System.out.println(ClassLoader.class.getClassLoader());
}

上述程序结果:

null

有上述理论分析,ClassLoader是由启动类加载的,所以其对应的类加载器应该是Bootstrap类加载,即应该返回null

3.2 如何验证扩展类加载器,系统类加载器也是由启动类加载器加载

查询源码可知,扩展类加载器和系统类加载器属于类Launcher中定义,外界访问不到,但是只要确定Launcher类是由启动类加载器加载,就会导致Launcher中的静态应用以及其所有的内部类都会被其加载,也就能证明系统类和系统类加载器被加载。

public static void main(String[] args) {
    System.out.println(Launcher.class.getClassLoader());
}

上述程序结果:

null

有上述理论分析,ClassLoader是由启动类加载的,所以其对应的类加载器应该是Bootstrap类加载,即应该返回null

4. 总结

其中的理论,暂时没有在网上早上相关的文档,只是看视频中老师是这样总结的。所以这里只是记录一下。

原文地址:https://www.cnblogs.com/duguxiaobiao/p/12180265.html

时间: 2024-10-31 16:59:31

5. 先有鸡还是先有蛋的相关文章

先有鸡还是先有蛋?应用程序开发与安全

在以前,2013年被认为是"资料外泄的一年",这或许是大错特错.2014年到目前为止,仅仅在美国,有纪录的外泄事件就有600起.这是个全球性的问题,需要更多的投资和能见度.近期所披露的JP摩根和可能的其他几个美国银行网络防御被攻破的确十分惊人. 许多焦点都放在攻击者身上:他们来自哪个国家,攻击背后有什么动机.是国家行动.金钱导向还是黑客主义者?有内贼或承包商疏忽吗?是中国还是俄罗斯?这些攻击以前所未有的程度发生,大多数入侵渗透发生在没有被适当修补的用户计算机或服务器.这本质上是因为应用

Java中关于先有鸡还是先有蛋的问题----Class&Object

在Java中,我们常常会看到一个类型:Class.并且在类似Person.class,cache.getClass()等代码中见到它的身影. 众所周知,Class是用来描述一个类的类型,而Object是所有对象的最终父对象.那么就会引申出下边的两个结论: 1.如果从对象的角度来看,那么肯定是先有Object对象,其次才有其派生的对象Class. 2.Class表示的是类.对象,肯定是先有类这个概念,其次才有各个类型(抽象的.非抽象的),包括Object. 这就会出现一个问题,到底是先有Class

C语言之“先有的鸡还是先有的蛋”浅谈

之前在一个十分著名的网站上看到:"Visual Studio 2010的界面是使用用WPF开发的":后来又看到"C语言的编译器通常是用C语言或是C++语言开发",好迷惑啊,怎么感觉好像有有自己生自己,鸡生蛋.蛋生鸡,鸡鸡蛋蛋无穷无尽的意思啊. WPF本身就是Visual Studio 中提供的一种开发项目模板,怎么Visual Studio 的界面是用它开发的?是现有的Visual Studio 还是先有的WPF? C语言编译器就是用来编译C语言的,如果C语言编译器

(转)学习css之郁闷篇-先有鸡还是先有蛋

原文链接:http://www.cnblogs.com/Dtscal/archive/2011/08/28/2155947.html 本来想要的结果是这样 个人认为:理论上代码应该是这样的先在div里面插入文字然后在插入img,最后设置img的对齐方式.大致效果应该能出来. <div id="top-photo"> 高档礼品 在本公司购买婚庆用品满千元即可获赠高档相册一个 <img src="images/6421.gif" width="

西普学院Crypto之先有鸡还是先有蛋

密文:Ijm,lo 3wsdr4 6tghu7 起初看到这个密文那是百思不得其解啊....各种解密都试了 什么栅栏凯撒组合啊... 后来想起有一篇writeup....于是默默的看了下键盘,果然是这样 Ijm,lo这几个字母在键盘上的位置是围着k的,所以得到了k,后面的一次类推... 最后得到的答案就是:key

富贵鸡奖金制度模式定制开发

富贵鸡游戏系统模式开发(杨?姐:136*027*9-9492 微电)富贵鸡系统开发平台.富贵鸡理财拆分系统开发.富贵鸡全网模式游戏系统项目开发.富贵鸡游戏APP软件专业开发.富贵鸡理财系统源码搭建 静态收益 1. 购买1只富贵鸡100个富贵蛋,每天花10个富贵蛋购买饲料喂养富贵鸡,富贵鸡开始生产富贵蛋(倒计时24小时)[不喂养富贵鸡不会生产富贵蛋也就没有收益]每天产富贵蛋13个,相当于每天收益3%. 2. 购买富贵鸡起计算,第一个30天每天产富贵蛋13个,第二个月每天12个,第三个月每天11个.

推荐系统(recommender systems):预测电影评分--构造推荐系统的一种方法:协同过滤(collaborative filtering )

协同过滤(collaborative filtering )能自行学习所要使用的特征 如我们有某一个数据集,我们并不知道特征的值是多少,我们有一些用户对电影的评分,但是我们并不知道每部电影的特征(即每部电影到底有多少浪漫成份,有多少动作成份) 假设我们通过采访用户得到每个用户的喜好,如上图中的Alice喜欢爱情电影,不喜欢动作电影,则我们将θ(1)设为[0,5,0],如此设置θ(2),θ(3),θ(4)的值,这样我们有了每个用户的θ的值以及他们对电影的打分,就可以推断出每部电影的x(特征)的值.

深度探索 OpenStack Neutron:BGP(1) 【转载】

3.4 BGP 原文地址:http://mp.weixin.qq.com/s?src=3&timestamp=1500043305&ver=1&signature=XwiIVVLHaVK5kzRNQKR1dkOzl1DR375P-R9g998sGTpT8WF20P9REPkYOfS85KOlI2h8RnHL3jvJvFu6gu*CNceX8Ky1iJXeGkX1NGYyMFruvBNS1XsJUv3RHgtEpGEIdMN4UZfKkUcdQQ6b9ZbvkqUaAcyanc3bh

内存对齐与自定义类型

一.内存对齐 (一).为什么会有内存对齐? 1.为了提高程序的性能,数据结构(尤其是栈)应该尽可能的在自然边界上对齐.原因是为了访问未对齐的内存,处理器需要进行两次访问,而访问对齐的内存,只需要一次就够了.这种方式称作"以空间换时间"在很多对时间复杂度有要求问题中,会采用这种方法. 2.内存对齐能够增加程序的可移植性,因为不是所有的平台都能随意的访问内存,有些平台只能在特定的地址处处读取内存. 一般情况下内存对齐是编译器的事情,我们不需要考虑,但有些问题还是需要考虑的,毕竟c/c++是