【程序编程相关:bug? Hbm2JavaTask无法实】
【推荐阅读:Web开发中防止浏览器的刷新键引起系统操】一. jvm的生命周期【扩展信息:java开源项目研究 3.许可协议介绍 】
jvm实例的诞生:当启动一个java程序时,一个jvm实例就产生了,任何一个拥有public static void main(string[] args)函数的class都可以作为jvm实例运行的起点,既然如此,那么jvm如何知道是运行class a的main而不是运行class b的main呢?这就需要显式的告诉jvm类名,也就是我们平时运行java程序命令的由来,如java classa hello world,这里java是告诉os运行sun java 2 sdk的java虚拟机,而classa则指出了运行jvm所需要的类名.jvm实例的运行:main()作为该程序初始线程的起点,任何其他线程均由该线程启动.jvm内部有两种线程:守护线程与非守护线程,main()属于非守护线程,守护线程通常由jvm自己使用,java程序也可以标明自己创建的线程是守护线程.jvm实例的消亡:当程序中的所有非守护线程都终止时,jvm才退出;若安全管理器允许,程序也可以使用runtime类或者system.exit()来退出.二.jvm的体系结构 粗略分来,jvm的内部体系结构分为三部分,分别是:类装载器(classloader)子系统,运行时数据区,与执行引擎. 下面将先介绍类装载器,然后是执行引擎,最后是运行时数据区1,类装载器,顾名思义,就是用来装载.class文件的.jvm的两种类装载器包括:启动类装载器与用户自定义类装载器,启动类装载器是jvm实现的一部分,用户自定义类装载器则是java程序的一部分,必须是classloader类的子类.(下面所述情况是针对sun jdk1.2)动类装载器:只在系统类(java api的类文件)的安装路径查找要装入的类 用户自定义类装载器: 系统类装载器:在jvm启动时创建,用来在classpath目录下查找要装入的类其他用户自定义类装载器:这里有必要先说一下classloader类的几个方法,了解它们对于了解自定义类装载器如何装载.class文件至关重要.protected final class defineclass(string name, byte data[], int offset, int length)... 下一页