JVM概述

作者: packet | 来源:发表于2018-07-20 19:38 被阅读0次

JVM结构如下图所示,由编译器,加载器,执行器和运行时数据区构成。


JVM内部结构

JVM内部也有编译器。上图缺少这个。
类加载其实就是根据编译后的class文件,将java字节码载入JVM内存,并完成对运行数据处于的初始化工作,供执行引擎执行。

类加载器的工作过程

类加载器工作原理:双亲委派原则(parent-first delegation model)。加载器试图加载某个类,会委托给父加载器加载,如果父加载器不能加载,则该加载器才会加载。

JVM自带的加载器分为启动类加载器,扩展类加载器和应用程序类加载器,每个类加载器在JVM中只有一个实例。如果可以自定义类加载器,它的父加载器是应用程序类加载器。

一个类由它的全限定名(包名+类名)和类加载器(实例)共同唯一确定。一个类只能被同一类加载器加载一次。

什么时候进行类加载呢?

1:当使用new关键字,和读取一个类的静态属性的时候(静态变量与静态方法,但是静态final的除外)。

2:当使用反射获取一个类的时候;

3:当初始化一个子类,必须首先加载并初始化其父类;

4:当执行一个含有main方法的类的时候,必须首先加载含有那个main方法的类。

字节码(bytecode)是跨平台跨语言的基石,class文件是JVM的数据入口,是个二进制字节流,不一定存储在硬盘上。

编译期将源文件编译成class文件(由字节码构成),JVM加载并执行这个文件里的字节码。

JVM面向 操作数栈 而非寄存器,JVM指令 = 操作码 + 操作数(0个或者多个)

HotSpot虚拟机中,解释执行和编译执行并存。(混合模式)

javac字节码编译器:java文件转变为class文件

JIT:Just in Time,将热点代码从字节码编译成本地机器代码

分层编译和执行

0层:解释执行

1层:Client Compiler 编译执行

2层:Server Compiler编译执行

2019-07-16
生成一个类,除了new还有反射。这是最基本的思维。

相关文章

  • JVM概述

    JVM结构如下图所示,由编译器,加载器,执行器和运行时数据区构成。 JVM内部也有编译器。上图缺少这个。类加载其实...

  • JVM概述

    1、JVM概念 1.1 Java虚拟机的原理 所谓的虚拟机,就是一台虚拟的机器。他是一款软件,用来执行一系列虚拟计...

  • JVM 概述

    Java Virtual Machine 是Java平台的基石,包含相应的技术规范、实现(JVM的实现就是JRE)...

  • jvm概述

    .java文件通过jdk中的javac编译工具编译生成.class字节码文件,.class文件才能被jvm识别运行...

  • JVM概述

    JVM,也就是Java虚拟机 所谓虚拟机是指:通过软件模拟的具有完整硬件系统的,运行在一个完全隔离环境中的计算机系...

  • JVM 概述

    整体结构 JVM架构模型 Java编译器输入的指令流是一种基于栈的指令架构,另一种是基于寄存器的指令集架构; 跨平...

  • JVM概述

    1.write once, run anywhere的基石 java语言有一个很重要的特性:一次编写,到处运行。即...

  • JVM 概述

    1 什么是JVM JVM是JavaVirtualMachine(Java虚拟机)的缩写,JVM是一种用于计算设备的...

  • JVM内存模型(jvm 入门篇)

    概述 jvm 入门篇,想要学习jvm,必须先得了解JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型,...

  • 九神带你入门JVM(上)

    概述 本篇较长,九神带你从0入门JVM,全文包括包括JVM的分类、JVM垃圾回收综述、JVM的内存模型(Java ...

网友评论

      本文标题:JVM概述

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