JVM-第一章 类加载子系统

6 篇文章 1 订阅
订阅专栏

1、虚拟机介绍

所谓虚拟机(Virtual Machine),就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机程序虚拟机

  •  大名鼎鼎的Virtual Box,VMware就属于系统虚拟机,它们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。
  • 程序虚拟机的典型代表就是Java虚拟机,它专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为Java字节码指令。
  • 无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。

2、Java虚拟机

  • Java虚拟机是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成。
  • JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回器,以及可靠的即时编译器。
  • Java技术的核心就是Java虚拟机(JVM,Java Virtual Machine),因为所有的Java程序都运行在Java虚拟机内部。
  • Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条Java指令,Java虚拟机规范中都有详细定义,如怎么取操作数,怎么处理操作数,处理结果放在哪里。
     

3、JVM的整体结构

  • HotSpot VM是目前市面上高性能虚拟机的代表作之一。
  • 它采用解释器与即时编译器并存的架构。
  • 在今天,Java程序的运行性能早已脱胎换骨,已经达到了可以和C/C++程序一较高下的地步。
  • 执行引擎包含三部分:解释器即时编译器垃圾回收器

4、JVM架构模型

Java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。具体来说:这两种架构之间的区别:

基于栈式架构的特点

  • 设计和实现更简单,适用于资源受限的系统
  • 避开了寄存器的分配难题:使用零地址指令方式分配
  • 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈指令集更小,编译器容易实现
  • 不需要硬件支持,可移植性更好,更好实现跨平台

基于寄存器架构的特点

  • 典型的应用是x86的二进制指令集:比如传统的PC以及Android的Davlik虚拟机。
  • 指令集架构则完全依赖硬件,与硬件的耦合度高,可移植性差
  • 性能优秀和执行更高效
  • 花费更少的指令去完成一项操作
  • 在大部分情况下,基于寄存器架构的指令集往往都以一地址指令、二地址指令和三地址指令为主,而基于栈式架构的指令集却是以零地址指令为主
     

 5、总结

  • 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令
  • 时至今日,尽管嵌入式平台已经不是Java程序的主流运行平台了(准确来说应该是HotSpot VM的宿主环境已经不局限于嵌入式平台了),那么为什么不将架构更换为基于寄存器的架构呢?
  • 因为基于栈的架构跨平台性好、指令集小,虽然相对于基于寄存器的架构来说,基于栈的架构编译得到的指令更多,执行性能也不如基于寄存器的架构好,但考虑到其跨平台性与移植性,我们还是选用栈的架构
     
JVM-01-JDK结构、JVM架构、生命周期
Ty的博客
10-12 109
JDK结构图 JVM整体结构 JVM的架构模型 Java编译器的输入指令流有两种方式:基于栈的指令集架构和基于寄存器的指令集架构 基于栈的指令集架构 设计和实现更简单,适用于资源受限的系统 不开了寄存器的分配难题:使用零地址指令方式分配 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈,指令集更小,编译器容易实现 不需要硬件支持,可移植性更好,更好实现跨平台 基于寄存器的指令集架构 典型的应用是x86的二进制指令集:比如传统的PC以及Android的Davlik虚拟机 指令集架构则完
1. JavaJVM简介
weixin_45267102的博客
09-09 327
天下事有难易乎? 为之,则难者亦易矣;不为,则易者亦难矣
Java - JVM简介
个人纪录、总结!
02-04 545
前言 面向人群及参考书目 JavaJVM简介 Java发展的重大事件 虚拟机与Java虚拟机 虚拟机分为系统虚拟机和程序虚拟机。 系统虚拟机:Visual Box、VMware - 完全对物理计算机的仿真,提供一个可运行完整操作系统的软件平台。 程序虚拟机:Java虚拟机[JVM] - 专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为JVM字节码指令[这里不一定是Jav...
java 1.5 新特性_Jdk1.5中的新特性 --泛型 (详细版)
weixin_36128337的博客
02-16 265
本来只转载了个链接,和一个简单的使用程序,但昨天不小心看到有人批判jdk1.5,先说java要强制转型不好的问题没解决,容器不能放基类型不好,接着说泛型没用。而恰恰Jdk1.5中解决了这些问题,所以感叹之余,把这篇文章改一下,详细的说说泛型。一,Java中的泛型:在Java中能使用到泛型的多是容器类,如各种list map set,因为Java是单根继承,所以容器里边可以放的内容是任何Object...
Java线程生命周期详解
最新发布
沐雨风栉
06-17 4762
Java中的线程生命周期是多线程开发的核心概念。了解线程的生命周期以及它们如何进行状态转换对于编写有效且无错误的多线程程序至关重要。
6第六章知识点整理2
08-03
类加载子系统负责加载类和接口,并确保它们的唯一性。执行引擎则负责解释和执行加载类中的字节码指令。此外,JVM规范定义了数据类型和操作,确保其在不同实现下的行为一致。Java的数据类型分为原始数据类型(如...
第1章 Java开发入门1.ppt
09-21
然后,JVM读取字节码并解释执行,这个过程包括类加载、验证、准备、解析和初始化。Java的垃圾回收机制自动管理内存,提高了程序的可靠性。 【Eclipse开发工具】 Eclipse是一款流行的开源集成开发环境(IDE),支持...
深入理解_Java_虚拟机 JVM_高级特性与最佳实践
09-09
前 言 致 谢 第一部分 走近Java 第1章 走近Java / 2 1.1 概述 / 2 1.2 Java技术体系 / 3 1.3 Java发展史 / 5 1.4 展望Java技术的未来 / 9 1.4.1 模块化 / 9 1.4.2 混合语言 / 9 1.4.3 多核并行 / 11 ...
[java入门学习]第1章Java概述.pdf
09-30
Java的主要特点是跨平台性,它的虚拟机(JVM)使得Java程序可以在不同操作系统上运行,只需一个Java解释器。这一特性极大地降低了软件开发的复杂性和成本,因为软件不必针对每个平台单独编译和修改。此外,JavaSoft...
java 对象的生命周期
qq_42809896的博客
12-02 432
JDK中的 对象生命周期概念简单来说就是 Object obj = null 清理对象复杂来说1. Reference2.PhantomReference3. FinalReference(private 级、想操作可以com.google.common.base.internal包下的Finalizer )4. SoftReference5. WeakReference代码的实际应用 简单来说就是 Object obj = null 清理对象 复杂来说 内容范围: 1. Referenc
Java【五】——线程的生命周期
似水流年,是谁苍白了等待
04-29 348
JDK中用Thread.State类定义了线程的几种状态 要想实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象表示线程,在它的一个完整的生命周期中通常要经历如下五个状态。 1.新建:当一个 Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建 状态,创建对象使用new关键字。 2.就绪:处于新建状态的线程被 starti0后...
Java的内存模型和生命周期_jvm内存模型和内存分配
weixin_31684041的博客
02-25 170
一、什么是jvm?jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的。jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域。JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台...
尚硅谷JVM全套教程
热门推荐
七叔的博客
06-01 1万+
不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽都顺利。
尚硅谷JVM从入门到精通宋红康版|第十一章、直接内存
weixin_45759791的博客
07-13 498
直接内存 Direct Memory 不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存 通常,访问直接内存的速度会优于Java堆。即读写性能高。 因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。 Java的NIO库允许Java程序使用直接内存,用于数据缓冲区 使用下列代码,直接分配本地内存空间 int BUFFER = 1024*
JDK的版本迭代特性(JDK9 - JDK20)
Lifelong learning
05-09 5709
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
java的几个生命周期(部分简单总结)
Lyh_ok的博客
02-22 2783
摘选了一些自己知道的生命周期总结,如不详细可以滴滴作者。
java的生命周期
new对象
08-20 6185
一.类的生命周期总览 类从被加载到虚拟机内存中开始, 到卸载出内存为止, 它的整个生命周期包括: 加载 (Loading) 、 验证(Verification) 、 准备(Preparation) 、 解析(Resolution) 、 初始化(Initialization) 、 使用(Using) 和卸载(Unloading)7个阶段。 其中验证、 准备、 解析3个 部分统称为连接...
深入理解java 类在jvm中的生命周期
他叫Mr.J
10-25 2068
**深入理解java 类在jvm中的生命周期**一、理解java程序的在java虚拟机中的生命周期(一)加载(二)连接 1.验证 2.准备 3.解析 (三)初始化 (四)卸载 二、java程序如何退出生命周期(一)执行了System.exit()方法导致程序退出(二)程序正常执行完退出生命周期(三)系统出现错误导致java虚拟机进程终止(一瓢冷水泼你计算机上就可以终止了)
Java中程序的生命周期
m0_48256515的博客
03-24 857
程序的生命周期 程序的生命周期是指应用程序启动到应用程序结束整个阶段的全过程。一段Java Code,大体分为:编译、类加载、运行、GC。 编译 Java语言的编译期其实是一段“不确定 ”的过程,因为可能是一个前端编译器把*.java文件转变为.class文件的过程;也可能是指JVM的后端运行期编译器(JIT编译器)把字节码转变为机器码的过程;还可能是指使用静态提前编译器(AOT编译器)直接把*.java文件编译成本地机器码的过程。但是在这里我们说的是第一类。也是符合我们大众对编译认知的。编译在这个时间
jvm类加载子系统有什么作用
04-21
JVM类加载子系统的主要作用是从文件系统或网络中加载需要运行的Java类,并在运行时为它们创建Java对象。它还负责解析类的依赖关系,并在需要时动态地链接它们。此外,JVM类加载子系统还提供安全机制,以确保只有授权...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 类加载的五个过程:加载、验证、准备、解析、初始化 19492
  • SpringMVC面试题及答案 6630
  • Bean的生命周期 6112
  • 常用的十大算法-弗洛伊德算法 5819
  • linux中route命令的用法 5326

分类专栏

  • 算法 20篇
  • 面试题 4篇
  • Java 9篇
  • 数据结构 26篇
  • webservice 1篇
  • JVM 6篇
  • 设计模式 6篇
  • MongoDb 2篇
  • docker 6篇
  • 网络编程 5篇
  • linux 7篇
  • leetcode 7篇
  • idea 2篇
  • Mysql 1篇
  • rabbitmq 1篇

最新评论

  • 安装VastBase G100 v2.2 Build 12

    2401_82687165: 我也来找安装包

  • 安装VastBase G100 v2.2 Build 12

    m0_58335612: 官网也是教了一大推,但是没有下载安装包的途径表情包

  • 安装VastBase G100 v2.2 Build 12

    chengshaoper: 安装包在哪找啊

  • 类加载的五个过程:加载、验证、准备、解析、初始化

    好奇的7号: 看完这文章比手冲都爽!写的真好

  • 类加载的五个过程:加载、验证、准备、解析、初始化

    数据666: 写的太好了,真是醍醐灌顶表情包

大家在看

  • 【人工智能】—XGBoost算法在构建互联网防火墙异常行为识别模型应用案例 381
  • 【PA交易】BackTrader(三): 多周期K线的Resampling
  • pc版c语言数字操作系统代码 84

最新文章

  • 安装VastBase G100 v2.2 Build 12
  • 发布订阅模式
  • SpringBoot 多数据源配置
2023年5篇
2022年61篇
2021年31篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司大鹏网站开发爱联建设网站东莞百姓网标王推广南山标王大鹏seo优化观澜百搜标王塘坑网站优化排名惠州网站推广永湖百度爱采购坂田网站排名优化坪山网站设计模板永湖网站设计大芬网站优化按天扣费沙井高端网站设计坑梓阿里店铺运营坪地百搜标王南山网站定制宝安百度标王布吉网络推广石岩建网站坪山百度关键词包年推广吉祥关键词排名观澜网站建设设计坪地关键词按天计费大芬网站优化按天计费坂田企业网站制作坑梓网站制作坪地网站改版坪地关键词排名包年推广平湖网站设计歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化