美文网首页
Java基础(2)——JVM原理

Java基础(2)——JVM原理

作者: 我变秃了也变强了 | 来源:发表于2017-06-06 19:32 被阅读0次

Java for Android的基础知识

一.JVM的结构

每个JVM都包括:

1.类加载子系统:装载具有适合名称的类或者接口。

2.内存空间:方法区,Java堆,Java栈,本地方法区。

3.垃圾收集器(GC)。

4.计数器以及寄存器。

5.执行引擎:负责执行包含在已装载的类或接口的指令。

6.本地方法接口和本地方法库。

二.JVM编译和执行过程

粗略流程在前篇已经介绍过来,这里主要注意这个过程中的三个重要机制:源代码编译机制,类加载机制,类执行机制。

1.源代码的编译机制:

(1)分析和输入符号表

(2)注解处理

(3)语义分析和生成class文件

最后生存的class文件由以下部分组成:

(1)结构信息:包含class文件格式,版本号以及各个部分的数量大小的信息。

(2)元数据:对应Java源码中声明和常量的信息。包含类/继承的超类/实现的接口的声明信息,域与方法声明信息和常量池。

(3)方法信息:对应源码中语句和表达式。包含字节码,异常处理表,求值栈与局部变量区大小,求值栈类型记录,调试符号信息。

2.类加载机制

JVM的类加载是通过ClassLoader以及其子类来完成的。

(1)Bootstrap ClassLoader:负责加载环境变量中JAVA_HOME中jre/lib/rt.jar里所有的Class,由C++实现,不是ClassLoader子类。

(2)Extension ClassLoader:负责加载Java平台扩展功能的一些jar包,包括JAVA_HOME中jre/lib/*.jar或者-Djava.ext.dirs指定目录下的jar包。

(3)App ClassLoader:负责加载Classpath中指定的jar包以及目录中的class文件。

(4)Custom Classloader:属于应用程序根据自身需要自定义的ClassLoader,例如tomcat、jboss都会根据j2ee规范自行实现ClassLoader。

加载过程会检查类是否已经被加载,检查顺序从CustomClassLoader到BootStrapClassLoader逐层检查,只要某个ClassLoader已加载则视为加载。而加载顺序与检查顺序相反。

3.类执行机制

JVM是基于堆栈的虚拟机。JVM为每个新创建的线程都分配一个堆栈。

一个Java程序的运行就是通过堆栈的操作来完成的。堆栈以帧为单位保存线程的状态。JVM只对堆栈进行两种操作:以帧为单位的压栈和出栈。

JVM执行class字节码,创建线程后,都会产生程序计数器(PC)和栈(stack),计数器存放下一条要执行的指令在方法内的偏移量,栈中存放一个个帧栈,每个帧栈对应每个方法的每次调用,而帧栈又由局部变量区和操作数栈两部分组成,局部变量区用于存放方法中的局部变量和参数,操作数栈中存放执行过程中产生的中间结果。

相关文章

  • Java 技术栈

    1、Java基础 Leetcode 刷题、Java 编程思想、JVM 原理、设计模式、Java 8 新特性 2、项目经验

  • 1.4 java开发必备技能

    ----初级1、java开发,编译,运行;2、jvm基本原理,jvm安装;3、http基础,html、css,js...

  • Java基础(2)——JVM原理

    Java for Android的基础知识 一.JVM的结构 每个JVM都包括: 1.类加载子系统:装载具有适合名...

  • Java知识图谱

    Java基础 JVM JVM内存模型和结构 GC原理&内存分配策略 性能调优:Thread Dump class ...

  • java服务器端岗位技能要求收集

    java基础Java基础扎实,理解io、多线程、集合等基础框架,对JVM原理有一定的了解 springspring...

  • Java面试题总结分析+自学笔记分享(附带学习脑图)

    JAVA核心知识整理 JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zo...

  • Java 内存基础知识

    主要介绍 Java 内存相关的基础知识,为 LeakCanary 原理分析做准备。 JVM 内存结构 JVM 在运...

  • Offer来了 Java面试核心知识点 框架篇

    面试在即,Java知识点很凌乱? 别急,有本套书在呢! 除了原理,还有框架! ★ 精细讲解JVM原理、Java基础...

  • JVM实战优化篇

    在前文《JVM原理解惑篇》中已经梳理了主要的JVM的理论基础:Java程序运行在Java虚拟机之上,JVM管理了整...

  • JVM实战优化篇

    在前文《JVM原理解惑篇》中已经梳理了主要的JVM的理论基础:Java程序运行在Java虚拟机之上,JVM管理了整...

网友评论

      本文标题:Java基础(2)——JVM原理

      本文链接:https://www.haomeiwen.com/subject/ugjnfxtx.html