JVM原理

简介: JVM 原理解释   JVM 全称是 Java Virtual Machine ,Java 虚拟机,这个 JVM 你是看不到的,它存在内存中。我们知道计算机的基本构成是:运算器、控制器、存储器、输入和输出设备,那这个 JVM 也是有这成套的元素,运算器是当然是交给硬件 CPU 还处理了,只是为了适应“一次编译,随处运行”的情况,需要做一个翻译动作,于是就用了JVM 自己的命令集,JVM 的命令集则是可以到处运行的,因为 JVM 做了翻译,根据不同的CPU ,翻译成不同的机器语言。

JVM 原理解释

  JVM 全称是 Java Virtual Machine ,Java 虚拟机,这个 JVM 你是看不到的,它存在内存中。我们知道计算机的基本构成是:运算器、控制器、存储器、输入和输出设备,那这个 JVM 也是有这成套的元素,运算器是当然是交给硬件 CPU 还处理了,只是为了适应“一次编译,随处运行”的情况,需要做一个翻译动作,于是就用了JVM 自己的命令集,JVM 的命令集则是可以到处运行的,因为 JVM 做了翻译,根据不同的CPU ,翻译成不同的机器语言。

  JVM 是一个内存中的虚拟机,那它的存储就是内存了,我们写的所有类、常量、变量、方法都在内存中。

  JVM 的组成部分


  Class Loader 类加载器

  类加载器的作用是加载类文件(.class)到内存,Class Loader 加载的 class 文件是有格式要求的。

  类加载的最终产品是位于运行时数据区的堆区的Class对象。

  Class对象封装了类在方法区内部的数据结构。 

  并且向JAVA程序提供了访问类在方法区内的数据结构。

  JVM加载class文件的原理机制

  1. Java 中的所有类,必须被装载到 JMV 中才能运行,这个装载工作是由 JVM 中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中。

  2. Java中的类大致分为三种:

  a) 系统类

  b) 扩展类

  c) 由程序员自定义的类

  3. 类装载方式,有两种:

  a) 隐式装载,程序在运行过程中当碰到通过 new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中。

  b) 显式装载,通过 class.forname() 等方法,显式加载需要的类。  

  4. 类加载的动态性体现

  一个应用程序总是由n多个类组成,Java 程序启动时,并不是一次把所有的类全部加载后再运行,它总是先把保证程序运行的基础类一次性加载到 JVM 中,其它类等到 JVM 用到的时候再加载,这样的好处是节省了内存的开销。因为java最早就是为嵌入式系统而设计的,内存宝贵,这是一种可以理解的机制,而用到时再加载这也是 Java 动态性的一种体现。

  5.Java 类装载器

  Java 中的类装载器实质上也是类,功能是把类载入 JVM 中,值得注意的是 JVM 的类装载器并不是一个,而是三个,层次结构如下:

      Bootstrap Loader  - 负责加载系统类 
            | 
          - - ExtClassLoader  - 负责加载扩展类 
                          | 
                      - - AppClassLoader  - 负责加载应用类

  为什么要有三个类加载器,一方面是分工,各自负责各自的区块,另一方面为了实现委托模型。

  6. 类加载器之间是如何协调工作的

  前面说了,Java中有三个类加载器,问题就来了,碰到一个类需要加载时,它们之间是如何协调工作的,即 Java 是如何区分一个类该由哪个类加载器来完成呢。

  在这里Java采用了委托模型机制,这个机制简单来讲,就是“类装载器有载入类的需求时,会先请示其Parent使用其搜索路径帮忙载入,如果 Parent 找不到,那么才由自己依照自己的搜索路径搜索类”,注意喔,这句话具有递归性。

  =================================

  资料参考:

  多谢 samuschen 的资料贡献,http://samuschen.iteye.com/blog/1119539

  转自:http://kb.cnblogs.com/page/167539/

  =================================

相关文章
|
7月前
|
存储 缓存 算法
JVM原理
JVM原理
35 0
|
1天前
|
数据可视化 安全 前端开发
JVM之JVM的基本介绍
JVM之JVM的基本介绍
6 0
|
8天前
|
监控 Oracle Java
JVM工作原理与实战(一):初识JVM
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。同时,JVM还具备动态优化功能,可以根据实际运行情况进行调整和优化。本文主要介绍了JVM的概念、JVM的三大核心功能、常见的JVM虚拟机等内容。
|
2月前
|
监控 算法 Java
深入理解JVM - G1调优简述
深入理解JVM - G1调优简述
25 0
|
6月前
|
Java
【JVM】什么是jvm,一文搞懂jvm该知道些什么
【JVM】什么是jvm,一文搞懂jvm该知道些什么
21 0
【JVM】什么是jvm,一文搞懂jvm该知道些什么
|
7月前
|
存储 缓存 Java
|
10月前
|
存储 安全 算法
JVM原理:JVM运行时内存模型(通俗易懂)
JVM原理:JVM运行时内存模型(通俗易懂)
66 0
|
10月前
|
存储 算法 Java
JVM原理:JVM垃圾回收算法(通俗易懂)
JVM原理:JVM垃圾回收算法(通俗易懂)
3855 0
|
11月前
|
存储 算法 Java
JVM,关于JVM基础的知识,你确定不了解一下吗?
JVM,关于JVM基础的知识,你确定不了解一下吗?
|
存储 缓存 监控
JVM03--JVM垃圾收集机制的一些基本概念
今天来学习下与JVM垃圾收集机制相关的一些基本概念。
58 0
JVM03--JVM垃圾收集机制的一些基本概念

热门文章

最新文章