JAVA虚拟机实例学习笔记一

分类: J2SE   出处:iocblog整理  更新时间:2008-11-06   添加到收藏  


  1.编译顺序:
           编译器           虚拟机   虚拟机
  java源文件*.java------->字节码*.class------>类装载器--->执行引擎
  (来源www.iocblog.net)
  一个.class文件只能包含一个类或接口。因此.java文件中定义了多少类,编译时就会生成多少.class文件(内部类不算)。
  
  2.java程序可以选择两种方式访问底层系统,由程序员选择:
  
  (1).通过java程序调用javaapi调用本地方法,访问底层系统,与平台无关。
  (2).通过java程序直接调用本地方法,访问底层系统与平台相关。
  本地方法即操作系统提供的方法。
  
  3.类装载器:
  
  装载java编译器编译好的字节码*.class和java api的字节码到方法区。
  
  java有两种类装载器:
  
  (1).启动类装载器:系统唯一,属于虚拟机的一部分,用特定语言编写(与虚拟机体层语言相通)使用默认方式装载类,主要用来装载核心类库。
  
  (2).用户自定义类装载器:可有任意多个,用java编写,属于java应用程序的一部分,能被编译成字节码,并被虚拟机所装载。
  
  一个装载器装载一个类及其该类所调用的一切类,使他们相互联系,并形成一个命名空间(name space),每一个类装载器对应一个命名空间。即java中名字空间的原理。
  
  类装载器成线形排列,自底向上,顶部为启动类装载器。除启动类装载器外,其他类装载器都由用户实例化,用来装载不同的类。当要装载一
  
  个类时,底部的装载器试图将该类交给父装载器装载,而该父类又试图交给他的父类装载,一直向上,直到启动类装载器。若父类装载器无法
  
  装载,则交给子类装载器装载,子类装载能装载的部分,将余下部分交给他的子类,直到底部。如:
  装载器a,b,c,d,e,f,启动
  a--->b--->c--->d--->e--->f--->启动
  当有一个类fun需要被装载时,他会一直上溯到顶部即启动类装载器。如果启动类装载器无法装载fun则交给f装载,f装载能装载的部分,将其
  
  余部分交给e,然后一直这样下去。
  
  如上所述,运行过程中每个类装载器装载的类形成一个运行时包,同一运行时包里的类可以互相访问,但不能访问包外部的类。
  

[1] [2] [3] 下一页


Tag: JAVA虚拟机



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。