1 / 29
文档名称:

JVM学习笔记.doc

格式:doc   大小:716KB   页数:29页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

JVM学习笔记.doc

上传人:一花一叶 2019/4/20 文件大小:716 KB

下载得到文件列表

JVM学习笔记.doc

相关文档

文档介绍

文档介绍:袈蚈膃本文来自CSDN博客,转载请标明出处:袆肂袂http://blog./cutesource/archive/2010/09/25/,我们可以从下图来了解JVM:蚀螇芄蒄膂羁从上图能清晰看到Java平台包含的各个逻辑模块,也能了解到JDK与JRE的区别葿袇腿对于JVM自身的物理结构,我们可以从下图鸟瞰一下:袅袄膈芈羇莆对于JVM的学****在我看来这么几个部分最重要:芆莂莃Java代码编译和执行的整个过程芁肇蕿JVM内存管理及垃圾回收机制莃肃衿Java代码编译和执行的整个过程肀***肃Java代码编译是由Java源码编译器来完成,流程图如下所示:螃薁蒁 袈芇羈膄芃蕿 袁莇膄Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:薅蚁袄 蚀莆蚂羆蒃肅荿蒆芆Java代码编译和执行的整个过程包含了以下三个重要的机制:膃袁羂Java源码编译机制膈薆肁类加载机制薄薃袆类执行机制膁蚆肃羅肁肁Java源码编译由以下三个过程组成:羀螆薀分析和输入到符号表莆螂薆注解处理蝿袆肄语义分析和生成class文件螆芀蒃流程图如下所示:螁羆羀 袃羂莇薀羆膆芄蚄薁最后生成的class文件由以下部分组成:艿肅荿蚅肂肇结构信息。包括class文件格式版本号及各部分的数量与大小的信息肈膅羃元数据。对应于Java源码中声明与常量的信息。包含类/继承的超类/实现的接口的声明信息、域与方法声明信息和常量池肆袄袄方法信息。对应Java源码中语句和表达式对应的信息。包含字节码、异常处理器表、求值栈与局部变量区大小、求值栈的类型记录、调试符号信息肁芅螈类加载机制膃节螇袀莅羅JVM的类加载是通过ClassLoader及其子类来完成的,类的层次关系和加载顺序可以由下图来描述:薄羄肂虿虿蒂羅蒁薈蚂蝿肆1)BootstrapClassLoader莅膃膀蒀衿羁负责加载$JAVA_HOME中jre/lib/,由C++实现,不是ClassLoader螆蚁芈类艿罿袃羃莃蒃2)ExtensionClassLoader羈聿莁莄螁聿负责加载java平台中扩展功能的一些jar包,包括$JAVA_HOME中jre/lib/*.jar或-)AppClassLoader螀膈螀膆羁蝿负责记载classpath中指定的jar包及目录中class蕿芈羆芃蚃羄4)CustomClassLoader莈莈腿蚄膀蕿属于应用程序根据自身需要自定义的ClassLoader,如tomcat、jboss都会根据j2ee规范自行实现ClassLoader莁蒈螃肄袂肂加载过程中会先检查类是否被已加载,检查顺序是自底向上,从CustomClassLoader到BootStrapClassLoader逐层检查,只要某个classloader已加载就视为已加载此类,保证此类只所有ClassLoader加载一次。而加载的顺序是自顶向下,也就是由上层来逐层尝试加载此类。腿薈虿蒅芀羆类执行机制袈蚈袅袆肂芀JVM是基于栈的体系结构来执行class字节码的。线程创建后,都会产生程序计数器(PC)和栈(Stack),程序计数器存放下一条要执行的指令在方法内的偏移量,栈中存放一个个栈帧,每个栈帧对应着每个方法的每次调用,而栈帧又是有局部变量区和操作数栈两部分组成,局部变量区用于存放方法中的局部变量和参数,操作数栈中用于存放方法执行过程中产生的中间结果。栈的结构如下图所示:羁螇肈肃