我们都知道,java是跨平台的,能够成为时代最火热的编程语言之一,它的跨平台机制功不可没,它的跨平台机制主要就是靠的java虚拟机,这是它能够跨平台的核心功能,那,小伙伴们知道java虚拟机的工作原理是什么吗?Java虚拟机它是如何运行的呢?下面就让小编为你们说道说到。

一、java虚拟机工作原理

在java虚拟机中,程序员编译之后的class文件其实是作为Java虚拟机中的质料被输入到Java虚拟机的内部的,那么,具体会由谁来做这一部分工作呢?类加载器!Java虚拟机的内部有着一个叫做类加载器的子系统,这个子系统会用来在程序运行时根据需要加载类。注意:是“根据需要”。Java虚拟机执行过程中,只有在它需要一个类的时候,它才会调用类加载器来加载这个类,而并不是在开始运行时就加载所有的类。举个例子:就像你吃饭一样,你只有在饿的时候才会去吃饭,总不能一次把一辈子的饭都吃完,然后接下来一辈子都不吃饭了吧。所以,一般来说,虚拟机加载类的时机,就是在第一次使用一个新的类的时候。

Java中由虚拟机加载的类,在被加载到Java虚拟机内存中之后,虚拟机就会读取并执行它内存里存在的字节码指令。虚拟机中执行字节码指令的部分被叫做执行引擎。唔,大概就像你吃饭,吃完饭总要消化的,不能一直吃下去,执行引擎就相当于人的胃一样。java虚拟机在执行过程中还会把各个class文件动态的连接起来。

如图:

二、Java虚拟机运行流程

程序执行流程我们可以把它划分为以下几个步骤:编辑源码、编译生成class文件、加载class文件、运行class字节码文件,其中后两个步骤都是在java虚拟机上执行的。

以上就是关于java虚拟机工作原理及运行流程的全部内容了,小伙伴们如果还想了解更多相关java入门知识的话,就一定要关注我们的网站啊。

推荐阅读:

java虚拟机工作原理_java虚拟机原理及工作原理都是什么?java虚拟机如何运行?...相关推荐

  1. java反射的原理_java反射机制的实现原理

    java反射机制的实现原理 反射机制: 所谓的反射机制就是java语言在运行时拥有一项自观的能力. 通过这种能力可以彻底的了解自身的情况为下一步的动作做准备. 下面具体介绍一下java的反射机制.这里 ...

  2. hashmap实现原理_Java中HashMap底层实现原理(JDK1.8)源码分析

    在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里.但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依 ...

  3. java 禁止使用多线程_Java多线程(四)-线程状态的转换 - Java 技术驿站-Java 技术驿站...

    一.线程状态 线程的状态转换是线程控制的基础.线程状态总的可分为五大状态:分别是生.死.可运行.运行.等待/阻塞.用一个图来描述如下: 1.新状态:线程对象已经创建,还没有在其上调用start()方法 ...

  4. java.exe闪退_java 双击jar包闪退或没反应,使用cmd运行提示没有主清单属性,该如何解决...

    java 双击jar包闪退或没反应,使用cmd运行提示没有主清单属性 使用cmd把类打包成课双击执行的jar包,双击后没反应,然后我去修改注册表 HKEY_CLASSES_ROOT\jarfile\s ...

  5. java 工作池_Java线程池的工作原理,好处和注意事项

    线程池的工作原理 一个线程池管理了一组工作线程, 同时它还包括了一个用于放置等待执行 任务的任务队列(阻塞队列) . 一个线程池管理了一组工作线程, 同时它还包括了一个用于放置等待执行 任务的任务队列 ...

  6. java set和get原理_Java线程池的实现原理和使用

    为什么用线程池 在我们进行开发的时候,为了充分利用系统资源,我们通常会进行多线程开发,实现起来非常简单,需要使用线程的时候就去创建一个线程(继承Thread类.实现Runnable接口.使用Calla ...

  7. java线程池概念_Java 线程池概念、原理、简单实现

    线程池的思想概述 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结東了,这样频繁创建线程就会大大降低系 ...

  8. java枚举类型原理_Java枚举类接口实例原理解析

    这篇文章主要介绍了Java枚举类接口实例原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 枚举类可以实现一个或多个接口.与普通类实现接口完全一 ...

  9. java 热部署实现_Java热部署的实现原理

    Java热部署的实现原理 Contributor:properties Type:简体中文 Date time:2017-01-22 00:10:19 Favorite:1 Score:0 返回上页 ...

  10. java disruptor压测_Java并发框架Disruptor实现原理与源码分析(二) 缓存行填充与CAS操作...

    ##缓存行填充 关于缓存行填充在我个人的印象里面第一次看到是在Java的java.util.concurrent包中,因为当时很好奇其用法背后的逻辑,所以查了很多资料才明白到底是怎么回事*(也许事实上 ...

最新文章

  1. Python的f-strings格式化
  2. Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) C. Connect Three 【模拟】...
  3. html中的input是一个块级元素,input属于什么元素,input是行内块元素吗
  4. fiddler 抓取手机app请求包
  5. Django-RESTframework序列器
  6. UML类图画法及类之间几种关系
  7. 缺失值填充4——使用线性模型(岭回归、Lasso回归、ElasticNet回归)填充序列缺失值
  8. JSP+JavaBean+Servlet+Oracle新增功能中对Date类型的字段的处理
  9. C++STL之整理算法
  10. json格式校验(json格式校验器)
  11. 日期格式化在高并发场景下的解决方案
  12. CCF 202206-4 光线追踪 python
  13. 修改Mac默认设置使Mac支持NTFS硬盘的读写
  14. 手柄摇杆控制角色移动
  15. 医院医生护士都不愿说的医学小常识,我终于查齐了。留着以后自己学习。什么都有...
  16. 费诺编码 c++代码实现 信息论实验
  17. 【西瓜书笔记】前两章
  18. 使用Docker安装Nginx并配置端口转发
  19. signature=f2128b3abc60d1d4e8d89ffc1312678e,Processes of Glacial Erosion
  20. 以源码运行nacos2.0.3报错

热门文章

  1. 总结全网最全的数据学习平台
  2. mplayer+科大讯飞离线语音包
  3. java webservice 异常_java异常webservice
  4. Goto是关键?思考
  5. 数据库入门基本知识点
  6. MyBatis入门到精通,最全最详细的MyBatis学习教程来了
  7. ensp 双机热备 配置_华为交换机VRRP配置教程(一)
  8. Sigar 编译笔记
  9. 推荐:绝对是最好用的公式编辑器
  10. idea快捷键 java