首页 > 学院 > 开发设计 > 正文

JVM技术,反射与动态代理

2019-11-18 15:32:47
字体:
来源:转载
供稿:网友

   java程序的工作机制:Java对象都以单独的class文件存在,java虚拟机将其载入并执行其虚拟机指令。

 

Java虚拟机查找这些java对象:

java虚拟机根据class path来查找java对象,而虚拟机的class path又分为三层:

bootstrap:sun.boot.class.path

extension: java.ext.dirs

application: java.class.path

三个class path各有对应的classloader。由上而下形成父子关系

当程序中调用new指令,或者ClassLoader.load方法时。其顺序如下:

1.       首先查看application的classloader中是否已有对应的class缓存,假如有则返回,并根据class分配内存。假如没有,接下一步。

2.       首先查看extension的classloader中是否已有对应的class缓存,假如有则返回,并根据class分配内存。假如没有,接下一步。

3.       首先查看bootstrap的classloader中是否已有对应的class缓存,假如有则返回,并根据class分配内存。假如没有,接下一步。

4.       由bootstrap的classloader在其class path中试图加载该class,假如有,则将该class放入cache中,并返回。假如没有,接下一步。

5.       由extension的classloader在其class path中试图加载该class,假如有,则将该class放入cache中,并返回。假如没有,接下一步。

6.       由application的classloader在其class path中试图加载该class,假如有,则将该class放入cache中,并返回。假如没有,则抛出ClassNotFound的exception。

 

Java虚拟机加载这些java对象:



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表