java加载

java中所谓的动态加载机制,就是我们写好了一段程序,会进行编译执行,编译时会生成我们所写的类的.class文件,这个文件中包含着一段对于此类的描述信息,包括类的路径,名字,方法等,这段信息可以生成类的.Class对象。

我们执行的时候,却并不是将所有的类都加载到内存中,而是动态的将我们用到的类加载到内存中。

当我们执行时,用到哪个类,我们就会用jvm实例化这个类,也就是将这个类加载到内存中,以便调用这个类的方法实现我们需要的功能。

实例化过程如下:

例如我们写这样一句代码A a=new A();

jvm首先在内存中的堆中查找是否存在A类的Class对象,若存在则直接用这个Class对象实例化类A,加载到内存中。

若是不存在类A的Class对象,jvm会查找类的.Class编译文件,jvm中有三个优先级别不同的类加载器,分别是BootClassLoader,ExtClassLoader,AppClassLoader,按照优先级别不同依次在不同的路径下查找类的.class编译文件。查找到编译文件后,根据编译文件中对类的描述信息,生成类的.Class对象,保存在内存中的堆中,再用这个类的.Class对象实例化类A,这样在下次实例化这个类时就可以直接用这个.Class对象实例化了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值