关于JVM对类的加载问题分析(续)

本文详细分析了JVM加载类的过程,并解释了引入外部类时产生的异常,强调了从错误中学习的重要性。同时介绍了类加载器的工作原理,以及JVM如何通过静态工厂加载类。

继续上一次对关于JVM对类的加载问题分析,我对上次的程序进行了加强,引入了一个外部的类Employee

package com.felay.userclasses;
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person(String name){
this.name=name;
}
public void sayHello(){
System.out.println("Hello");
}
public static void main(String[] args) {
Employee e =new Employee("张三",8000,1987,12,15);
e.riseSalary(5);
}
}

这次Eclipse开启了我电脑上的5189号端口,也开启了一个主线程

这一次,由于我引用外部,所以情况有点复杂,因为我引入了外部类,因此JVM会抛出大量的异常,尽管这些异常是不必须的,因此我记得有本书上说java的异常有好处也有坏处,好处是易学,其中很大原因就是java封装了我们平时很多错误,但是作为程序员,我们学习的最佳途径本应该是从错误中学习才会很深刻。在这里我们就不讨论这个了。

这里主要是不能找到Employee该类的异常。,这里我们忽略这些异常不去关心,因为这些异常是不会发生的。

重点来了:这个时候,JVM开始加载Employee类了。我们可以看到有个线程调用run()方法开始加载我们的Employee类,其实在这里我也知道这个方法是Eclipse软件带的功能还是Eclispe内置的JVM带的功能(姑且认为是JVM,因为下面先是了我安装JDK中的javaw.exe程序),这点还是需要继续看资料,我们由下图可以看到,JVM通过类加载器先是寻找并发现该类文件,然后加载

至于类加载器是如何工作的,至此我也不清楚,我也想知道,因为我没有该源文件,只知道它是由一个静态工厂产生一个sun.misc.Launcher类来进行对类的加载的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值