Java 虚拟机以及程序的生命周期:
当通过java命令运行一个java程序时,就启动一个java虚拟机进程。java虚拟机将正常结束生命周期。
1 程序正常执行
2 程序在执行过程中因为出现异常或者错误而终止。
3 执行system.exit方法。
[color=darkred][size=medium]类的加载:[/size][/color]
类的加载是指把类的.class文件的二进制数据读入到内存中,把它存放在运行时的数据区的方法区内,然后在堆区中创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。
java虚拟机能够从多种来源加载类的二进制数据:
1 从本地文件系统,加载类的.class文件
2 通过网络下载类的.class文件
3 从zip java 或其他归档文件中提取class文件
................
类的加载的最终产品是位于运行时数据区的堆区的Class对象。Class对象封装了类在方法区的数据结,并且向java程序提供了访问类在方法区内的数据结构的接口。
[quote]类的加载由类加载器完成。
1 Java虚拟机自带的加载器,包括启动类加载器,扩展类加载器和系统类加载器
2用户自定义的类加载器 ,是java.lang.ClassLOader类的子类的实例。[/quote]
[color=olive]
[size=medium]类的初始化时期:
[/size][/color]
类的初始化的时期: java虚拟机只有在程序主动使用一个类或接口时才会初始化它。
只有6种活动看作是程序对类或接口的主动使用。
当通过java命令运行一个java程序时,就启动一个java虚拟机进程。java虚拟机将正常结束生命周期。
1 程序正常执行
2 程序在执行过程中因为出现异常或者错误而终止。
3 执行system.exit方法。
[color=darkred][size=medium]类的加载:[/size][/color]
类的加载是指把类的.class文件的二进制数据读入到内存中,把它存放在运行时的数据区的方法区内,然后在堆区中创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。
java虚拟机能够从多种来源加载类的二进制数据:
1 从本地文件系统,加载类的.class文件
2 通过网络下载类的.class文件
3 从zip java 或其他归档文件中提取class文件
................
类的加载的最终产品是位于运行时数据区的堆区的Class对象。Class对象封装了类在方法区的数据结,并且向java程序提供了访问类在方法区内的数据结构的接口。
[quote]类的加载由类加载器完成。
1 Java虚拟机自带的加载器,包括启动类加载器,扩展类加载器和系统类加载器
2用户自定义的类加载器 ,是java.lang.ClassLOader类的子类的实例。[/quote]
[color=olive]
[size=medium]类的初始化时期:
[/size][/color]
类的初始化的时期: java虚拟机只有在程序主动使用一个类或接口时才会初始化它。
只有6种活动看作是程序对类或接口的主动使用。