皇茶找 可爱雪,坐上火车去拉萨伴奏,酷牛音乐网
现在我们例子中生成的两个.class文件都会直接被加载到jvm中吗??
虚拟机规范则是严格规定了有且只有5种情况必须立即对类进行“初始化”(class文件加载到jvm中):
所以说:
如何将类加载到jvm
class文件是通过类的加载器装载到jvm中的!
java默认有三种类加载器:
各个加载器的工作责任:
工作过程:
其实这就是所谓的双亲委派模型。简单来说:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把请求委托给父加载器去完成,依次向上。
好处:
特别说明:
类加载详细过程
加载器加载到jvm中,接下来其实又分了好几个步骤:
jit即时编辑器
一般我们可能会想:jvm在加载了这些class文件以后,针对这些字节码,逐条取出,逐条执行-->解析器解析。
但如果是这样的话,那就太慢了!
我们的jvm是这样实现的:
热点代码解释:一、多次调用的方法。二、多次执行的循环体
使用热点探测来检测是否为热点代码,热点探测有两种方式:
目前hotspot使用的是计数器的方式,它为每个方法准备了两类计数器:
回到例子中
按我们程序来走,我们的java3ytest.class文件会被appclassloader加载器(因为extclassloader和bootstrap加载器都不会加载它[双亲委派模型])加载到jvm中。
随后发现了要使用java3y这个类,我们的java3y.class文件会被appclassloader加载器(因为extclassloader和bootstrap加载器都不会加载它[双亲委派模型])加载到jvm中
如果对java微服务、分布式、高并发、高可用、大型互联网架构技术、面试经验交流。感兴趣的话可以关注我哦!
小编也有一些资料分享给大家,对学习提升很有作用的,有关于分布式,微服务,性能优化,spring,mybatis的等源码知识点的录像视频还有spring, jvm等等的面试题,希望能够帮助到大家!
需要的可以加我的java交流群领取哦!
772300343 群主会主动给你的哒!
我是小架,我们下篇文章见!
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
浅析我对 String、StringBuilder、StringBuffer 的理解
使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)
Springboot整合freemarker 404问题解决方案
引入mybatis-plus报 Invalid bound statement错误问题的解决方法
网友评论