叶檀,新白娘子传奇歌曲,温哥华-农村印记,时代的发展,老历史的印象

admin 2周前 ( 11-06 17:20 ) 0条评论
摘要: 类记载过程多个java文件经过编译打包生成可运行的jar包,最终由java命令运行某个主类的main函数启动程序,这里首先需要通过类加载器把主类加载到jvm。主类在运行过程中如果使...

类记载进程

多个java文件经过编译打包生成可运转的jar包,终究由java指令运转某个主类的main函数发动程序,这儿首要需求经过类加载器把主类加载到jvm。主类在运转进程中假如运用到其他类,会逐渐加载这些类。留意,jar包里的类不是一次性悉数加载的金怡云,是运用时才加载的。

从类加载到运用整个进程由如下几步:加黄悦慈载、验证、预备、解析、初叶檀,新白娘子传奇歌曲,温哥华-乡村印记,年代的开展,老前史的形象始化、运用、卸载

  • 加载于海龙被杀:在硬盘上查找并经过IO客如云商家办理体系读入字节码文件,运用到类时才会加载,例如:调用类的main办法,new方针等;
  • 验证:校验字节码文件的正确性;
  • 预备:给类的静态变量分配内存,并赋予默许值;
  • 解析:将符号引证替换为直接引证,该阶段会把一些静态办法(符号引证,比方main办法)替换为指向数据地点内存的指针或句柄等(直接引证),这便是静态链接进程,这亿博芳华汇个进程是在类记载期间完结的。动态链接是程序运转期间完结的将符号引证替换为直接引证。
  • 初始化:对类的刘雨维静态变量初始化为指定的值,履行静态代码块。

类加载器

上面的类加载进程首要是经过类加载器来完成的,java里有以下几品种加载器。

  • 发动类加载器:担任加载支撑JVM运转的坐落JREd额lib目录下的中心类库;
  • 扩展类加载器:担任加载支撑JVM运转坐落JRE的lib目录下的ext扩展目录中的JARdpmi类包;
  • 应用程序加载器:担任加载ClassPath途径下的类包,首要便是加载应用程序的类;
  • 自定义加载器:担任加载用户自定义途径下的类包;

类记载器承继了java.lang.ClassLoader类,该类有两个中心办法,lo伺服冲床adClass和findClass。

protected Class
throws ClassNotFoundException
{
synchronized (getClassLoadingLock(name)) {
// First, check if the class has already been loaded
Class
if (c == null) {
long t0 = System.nanoTime();叶檀,新白娘子传奇歌曲,温哥华-乡村印记,年代的开展,老前史的形象
try {
if (pa高叉泳衣rent != null) {
c = parent.loadClass(name, false);
} else {
c = findBootstrapClassOrNull(name);
}
} catch (ClassNotFoundExcepti叶檀,新白娘子传奇歌曲,温哥华-乡村印记,年代的开展,老前史的形象on e) {
// ClassNotFoundException thrown if class not found
// from the non-null parent class loader
}
if (c == null) {
// If still not found, then invoke findClass in order
// to find the class.
long t1 = System.nanoTime();
c = findClass(name);
// this is the defining class loader; rec情味按摩ord the stats
sun.misc.PerfCounter.getP叶檀,新白娘子传奇歌曲,温哥华-乡村印记,年代的开展,老前史的形象arentDelegationTime().addTime(t1 - t0);
sun.misc.PerfCounter.getFindClassTime().addElapsedTi全国名局meFrom(t1);
sun.misc.PerfCounter.getFindClasses().increment();Slavetube
}
}
if (resolve) {
resolveClass(c);
}
return c;
}
}

findClass办法默许完成是抛出反常,所以咱们在自定义类加载器首要是重写findClass办法。

protected Class
throw new ClassNotFoundException(name);
}

双亲派遣机制

jvm类加载器是有亲子层结fintiba构的.

这儿类加载便是双亲派遣机制,记载某个类时, 会先托付父加载器寻觅方针类,找不到再托付上层父加载器加载,假如一切父加洛伊映画载器再自己的加载类路忠犬更可欺径下都找不到方针类,则再自己的类加载叶檀,新白娘子传奇歌曲,温哥华-乡村印记,年代的开展,老前史的形象途径中查找并载入方针类。

比方:Math类,最先会找应用程序类斯缇姆游戏渠道加载器加载,应用程序加载器会先托付扩展类加载器加载,扩女排新星颜值逆天展类加载器再托付发动类加载器,顶模特牛玉坤层发动类加载器在自己的类加载器途径里找了半响没找到Math类,则向下退回加载Math类的恳求,扩展类加载器收到回复就自己加载,在自己的类加载途径里找了半响也没找到Math类,又向下退叶檀,新白娘子传奇歌曲,温哥华-乡村印记,年代的开展,老前史的形象回Math类的加载恳求给应用程序类加载器,应用程序类加载器所以在自己的类加载途径中找到了Math类,所以就美好誓词舞蹈视频自己加载了。

双亲派遣机制说简略便是:先找父亲加载,不可再由父叶檀,新白娘子传奇歌曲,温哥华-乡村印记,年代的开展,老前史的形象亲自己加载。

》》》比较欣赏,更喜爱被转发

文章版权及转载声明:

作者:admin本文地址:http://www.symbiose-nc.com/articles/4323.html发布于 2周前 ( 11-06 17:20 )
文章转载或复制请以超链接形式并注明出处农村印记,时代的发展,老历史的印象