范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

第一章JVM与Java体系结构

  1、前言
  你是否也遇到过这些问题? 运行着的线上系统突然卡死,系统无法访问,甚至直接OOM! 想解决线上JVM GC问题,但是无从下手。 新项目上线,对各种JVM参数设置一脸茫然,直接默认吧,然后就JJ了 每次面试之前都有重新被一遍JVM的一些原理概念性的东西,然而面试官却经常问你在实际项目中如何调优JVM参数,如何解决GC、OOM等问题,一脸懵逼。
  应用程序
  大部分Java开发人员,除会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。
  开发人员如何看待上层框架 一些有一定工作经验的开发人员,打心眼儿里觉得SSM、微服务等上层技术才是重点,基础技术并不重要,这其实是一种本末倒置的"病态"。 如果我们把核心类库的 API比做数学公式的话,那么 Java 虚拟机的知识就好比公式推导过程
  计算机系统体系对我们来说越来越远,在不了解底层实现方式的前提下,通过高级语言很容易编写程序代码。但事实上计算机并不认识高级语言。
  架构师每天都在思考什么? 应该如何让我的系统更快? 如何避免系统出现瓶颈?
  知乎上有条帖子:应该如何看招聘信息,直通年薪50万+? 参与现有系统的性能优化,重构,保证平台的性能和稳定性 根据业务场景和需求,决定技术方向,做技术选型 能够独立架构和设计海量数据下的高并发分布式解决方案,满足功能和非功能需求 解决各类潜在系统风险,核心功能的架构与代码编写 分析系统瓶颈,解决各种疑难杂症,性能调优等
  我们为什么要学习JVM? 面试的需要(BATJ、TMD、PKQ等面试都爱问) 中高级程序员必备技能:项目管理、调优的需要 追求极客的精神:比如:垃圾回收算法、JIT、底层原理
  垃圾收集机制为我们打理了很多繁琐的工作,大大提高了开发的效率,但是,垃圾收集也不是万能的,懂得JVM内部的内存结构、工作机制,是设计高扩展性应用和诊断运行时问题的基础,也是Java工程师进阶的必备能力。
  Java VS C++ 2、参考书目
  3、Java及JVM简介3.1 Java生态圈
  Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大,
  Java也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。 作为一个平台 ,Java虚拟机扮演着举足轻重的作用。
  Groovy、Scala、JRuby、Kotlin等都是Java平台的一部分 作为一种文化 ,Java几乎成为了"开源"的代名词。
  第三方开源软件和框架。如Tomcat、Struts,MyBatis,Spring等。
  就连JDK和JVM自身也有不少开源的实现,如openJDK、Harmony。 作为一个社区 ,Java拥有全世界最多的技术拥护者和开源社区支持,有数不清的论坛和资料。从桌面应用软件、嵌入式开发到企业级应用、后台服务器、中间件,都可以看到Java的身影。其应用形式之复杂、参与人数之众多也令人咋舌。 3.2 跨平台的语言
  3.3JVM:跨语言的平台
  JVM跨语言的平台 随着Java7的正式发布,Java虚拟机的设计者们通过JSR-292规范基本实现在 Java虚拟机平台上运行非Java语言编写的程序 。 Java虚拟机根本不关心运行在其内部的程序到底是使用何种编程语言编写的, 它只关心"字节码"文件 。也就是说Java虚拟机拥有语言无关性,并不会单纯地与Java语言"终身绑定",只要其他编程语言的编译结果满足并包含Java虚拟机的内部指令集、符号表以及其他的辅助信息,它就是一个有效的字节码文件,就能够被虚拟机所识别并装载运行。
  Java不是最强大的语言,但是JVM是最强大的虚拟机。 3.4 字节码
  • 我们平时说的java字节码,指的是用java语言编译成的字节码。准确的说任何能在jvm平台上执行的字节码格式都是一样的。所以应该统称为: jvm字节码 。
  • 不同的编译器,可以编译出相同的字节码文件,字节码文件也可以在不同的JVM上运行。
  • Java虚拟机与Java语言并没有必然的联系,它只与特定的二进制文件格式一Class文件格式所关联,Class文件中包含了 Java虚拟机指令集(或者称为字节码、Bytecodes) 和符号表,还有一些其他辅助信息。 3.5多语言混合编程
  Java平台上的多语言混合编程正成为主流,通过特定领域的语言去解决特定领域的问题是当前软件开发应对日趋复杂的项目需求的一个方向。
  试想一下,在一个项目之中,并行处理用Clojure语言编写,展示层使用JRuby/Rails,中间层则是Java,每个应用层都将使用不同的编程语言来完成,而且,接口对每一层的开发者都是透明的, 各种语言之间的交互不存在任何困难,就像使用自己语言的原生API一样方便,因为它们最终都运行在一个虚拟机之上。
  对这些运行于Java虚拟机之上、Java之外的语言,来自系统级的、底层的支持正在迅速增强,以JSR-292为核心的一系列项目和功能改进(如DaVinci Machine 项目、Nashorn引擎、InvokDynamic指令、java .lang .invoke包等), 推动Java虚拟机从"Java语言的虚拟机"向"多语言虚拟机"的方向发展 3.6如何真正搞懂JVM
  Java虚拟机非常复杂,要想真正理解它的工作原理,最后自己动手编写一个!
  4、Java发展的重大事件1990年,在 Sun 计算机公司中,由 Patrick Naughton、 MikeSheridan 及James Gosling领导的小组Green Team,开发出的新的程序语言,命名为Oak,后期命名为Java 1995年,Sunlli式发布Java和Hot Java产品,Java首次公开亮相。 1996年 1 月 23 日 Sun Microsystems发布了 JDK 1.0。 1998年,JDK 1.2版本发布。同时,Sun发布了 JSP/Servlet、EJB规范,以及将Java分成了 J2EE、J2SE和J2ME。这表明了 Java开始向企业、桌而应用和移动设备应用3大领域挺进。 2000年,JDK 1.3发布, Java HotSpot Virtual Machine正式发布,成为Java的默认虚拟机。 2002年,JDK 1.4发布,古老的Classic虚拟机退出历史舞台。 2003年年底,J ava平台的Scala正式发布,同年Groovy也力口入了 Java阵营。 2004年,JDK 1.5发布。同时JDK1.5改名为JavaSE 5.0。 2006年,JDK 6发布。同年, Java开源并建立了 OpenJDK。顺理成章,Hotspot虚拟机也成为了 OpenJDK中的默认虚拟机 2007年, Java平台迎来了新伙伴Clojure。 2008 年,Oracle 收购了 BEA, 得到了 JRockit 虚拟机 。 2009年,Twitter宣布把后台大部分程序从Ruby迁移到Scala,这是Java平台的又一次大规模应用。 2010年,OracIe收购了Sun, 获得Java商标和最具价值的HotSpot虚拟机 。此时,Oracle拥有市场占用率最高的两款虚拟机HotSpot和JRockit,并计划在未来对它们进行整合:HotRockit 2011年,JDK7发布。在JDK l.7u4中, 正式启用了新的垃圾回收器G1。 2017年,JDK9发布。 将G1设置为默认GC,替代CMS 同年,IBM的J9开源,形成了现在的Open J9社区 2018年,Android的Java侵权案判决,Google赔偿Oracle计88亿美元 同年,Oracle宣告JavaEE成为历史名词,JDBC、JMS、Servlet赠予Eclipse基金会 同年,JDK11发布,LTS版本的JDK, 发布革命性的ZGC,调整JDK授权许可 2019年,JDK12发布,加入RedHat领导开发 的Shenandoah GC
  在JDK11之前,OracleJDK还会存在一些OpenJDK中没有的、闭源的功能。但在JDK11中,我们可以认为OpenJDK和OracleJDK代码实质上已经完全一致的程度。 5.虚拟机与Java虚拟机5.1虚拟机所谓虚拟机(Virtual Machine),就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为 系统虚拟机 和 程序虚拟机 。 大名鼎鼎的visual Box, VMware就属于系统虚拟机,它们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。 程序虚拟机的典型代表就是Java虚拟机,它专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为Java字节码指令。 无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中 5.2 Java虚拟机Java虚拟机是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成。 JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回器,以及可靠的即时编译器。 Java技术的核心就是Java虚拟机(JVM, Java Virtual Machine),因为所有的Java程序都运行在Java虚拟机内部。 作用
  Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条Java指令, Java虚拟机规范中都有详细定义,如怎么取操作数,怎么处理操作数,处理结果放在哪里。 特点 一次编译,到处运行 自动内存管理 自动垃圾回收功能 5.3JVM的位置
  JVM是运行在操作系统之上的,它与硬件没有直接交互。
  JVM的整体结构
  HotSpot VM是目前市面上高性能虚拟机的代表作之一 它采用解释器与即时编译器并存的架构。 在今天,Java程序的运行性能早已脱胎换骨,已经达到了可以和C/C++程序一较高下的地步。 Java代码的执行流程
  JVM的架构模型
  Java编译器输入的指令流基本上是一种基于 栈的指令集架构 ,另外一种指令集架构则是基于 寄存器的指令集架构 。
  具体来说:这两种架构之间的区别: 基于栈式架构的特点 设计和实现更简单,适用于资源受限的系统; 避开了寄存器的分配难题:使用零地址指令方式分配。 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现。 不需要硬件支持,可移植性更好,更好实现跨平台 基于寄存器架构的特点 典型的应用是x86的二进制指令集:比如传统的PC以及Android的Davlik虚拟机。 指令集架构则完全依赖硬件,可移植性差 性能优秀和执行更高效; 花费更少的指令去完成一项操作。 大部分情况下,基于寄存器架构的指令集往往都以一地址指令、二地址指令和三地址指令为主,而基于栈式架构的指令集却是以零地址指令为主。 举例1:
  同样执行2+3这种逻辑 ,其指令分别如下:
  基于栈的计算流程(以Java虚拟机为例): iconst_2 //常量2入 istore_1 iconst_3 //常量3入栈 istore_2 iload_1 iload_2 iadd //常量2、3出,执行相加 istore_0 //结果5入
  而基于寄存器的计算流程: mov eax,2 //将eax寄存器的值设为2 add eax,3 //使eax寄存器的值加3举例2: Public int calc(){ Int a = 100; Int b = 200; Int c = 300; Return (a+b)*c; }public int calc(); Code: Stack=2, Locals=4, Args_size=1 bipush 100 istore_1 sipush 200 istore_2 Sipush 300 istore_3 iload_1 iload_2 Iadd iload_3 Imul Ireturn }
  总结:
  由于跨平台性的设计, Java的指令都是根据栈来设计的 。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。 JVM的生命周期9.1虚拟机的启动
  Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。 9.2虚拟机的执行一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。 程序开始执行时他才运行,程序结束时他就停止。 执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程。 9.3虚拟机的退出
  有如下的几种情况: 程序正常执行结束 程序在执行过程中遇到了异常或错误而异常终止 由于操作系统出现错误而导致Java虚拟机进程终止 某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作。 除此之外, JNI ( Java Native Interface)规范描述了用JNI Invocation API来加载或卸载Java虚拟机时, Java虚拟机的退出情况。 10.JVM的发展历程

中山市工改办以工改推动产业再腾飞担当作为3月26日,中山市召开2022年度担当作为最美建设者表彰表扬大会。中山市工改办被评为2022年度担当作为先进集体,市自然资源局局长杨戈作为受表彰表扬代表发言。中山市自然资源局局长杨神医刘洪斌3年换了9个身份,疯狂捞金80亿,如今怎样了?80亿人民币!难以想象的财富,如果全换成现金,能铺满80间100平米的房子。如果说这么多的钱仅靠一个退休老太动动嘴就能赚到,你敢相信?然而就是这么玄幻,人人喊打的诈骗戏精刘洪斌让这签约金额超200亿2023食博会预博会取得巨大成功视频加载中captionssettings,openscaptionssettingsdialogcaptionsoff,selectedBeginningofdialogwind乱买房,害死人来源柯谈地产观原创作者柯谈今天只分享买卖房子的纯干货,没一点水份,保证你受用终身。1hr历史大底下图是冰山指数根据国家统计局70城数据计算出来的中国楼市15年房价月环比走势图箭头所福州这两个县或将合并,如果成功实现,未来经济发展有望腾飞关注方方格儿,带您云游世界。福建省位于中国东南沿海,东北与浙江省毗邻,西北与江西省接界,西南与广东省相连,东南隔台湾海峡与台湾省相望。福建省地势西北高,东南低,呈依山傍海态势,境内零售量同比增超20!彩电市场迎暖春,企业满产备战销售旺季视频加载中(央视财经正点财经)电视面板是整个液晶显示行业近期最热的一个赛道,目前电视卖得到底怎么样?整机厂为什么要增加面板的备货,加快生产节奏?在四川省绵阳市的一处电视生产车间,9宏观政策发力进行时数实深度融合重点行业数字化转型路线图将出生产线上,机械臂灵活地挥舞翻转车间里,屏幕上记录产品信息的数字不断跳动仓库内,智慧仓储24小时不间断地拣货发运眼下,越来越多的传统产业将数字技术嵌入生产各环节,带来提质增效的深刻变坐着公交去旅行桓台县旅游景点公交路线攻略桓台在桓台的历史长河中,曾经有南来北往的槽船穿梭在水面,乌河在流淌的时光中,积累了深厚的文化底蕴。这一湾河水,总有平缓且坚定的力量,带着一城的繁华和记忆不断向前奔涌而去。境内的马踏打卡天坛公园趁着春意浓浓,温度适宜,继续打卡天坛公园,感受宏伟建筑的气势,想象祭天祈愿的场景。圜丘,只要一说天坛眼前就会有的画面。棂星门,八组24门,实在是一图无法收入,凑合拼图了。丹陛石雕双自驾游第二条路线十九篇(退休生活规划四十五)第二条路线的沿途各地景点克什克腾旗主要景点有十处1。阿斯哈图石阵旅游区2。克什克腾世界地质公园3。曼陀山庄4。青山岩臼景区5。青山冰臼群6。达里诺尔国家级自然保护区7。贡格尔草原8寂静法师行脚连载73读后感行脚的途中,一些人不能放下,总是担心路上遇到的各种困难怎么办?寂静法师说一切问题,直接面对就是,没有怎么办!其实这样担忧的心理是大部分人的状态,包括我自己也是经常有这样的心理,事情
怎么通过分析获得完整信息,辅助数字化运营决策?上SpeedBI数据分析云,免费做数据可视化分析!经常和数据打交道的小伙伴应该都有这样的感觉在数据分析中,很难快速地获取完整的信息。这很大程度上是受到了数据孤岛软件的聚合分析能力等自动驾驶汽车如何安全上路?两部门发文划重点智能网联汽车是新一轮科技革命的重要载体,已经成为全球汽车产业转型升级的战略方向。11月2日,根据工信部官网消息,工信部公安部就关于开展智能网联汽车准入和上路通行试点工作的通知(以下宝妈带两岁男童进女厕所被骂没素质,发文质疑引发网友热议近日,福建泉州,宝妈独自带儿子去逛商场,期间身体不适,怕把孩子独自留在厕所外不安全,就带着去了女厕所,卫生间都是独立的隔间,就让孩子站到隔间里,结果出来后被几个女生骂没素质。该宝妈郑爽外网庆生疑欲复出,不择手段发不雅照,网友还没疯完?娱评大赏近年来,国家对失德艺人打击严厉,坚决封杀不给任何机会。但有些被封杀的艺人,仍然不想放弃吃明星饭,辗转到了国外,试图复出。人在做天在看,他们的如意算盘真的能打响吗?01hr郑耳钉姐李少莉让网友们认识什么是奢侈品,自己学历年龄却是迷耳钉姐李少莉以一己之力将发言人这个职业变为高危职业,若职业能力不过关看来真的不适合待在该岗位,没有一定的反应能力也很容易翻船。但苍蝇不叮无缝的蛋,发言人稍有不慎很容易被广大网友盯上vivoX90Pro概念机设计焕然一新,5000mAh三星E6屏骁龙8G2VivoX90系列一直以高性价比在旗舰市场大放异彩。全新的VivoX90系列或将提前到来,有网友放出了这款新机的渲染图。并且还将用上不少黑科技,竞争力极强。我们先来看看VivoX9超级大单又来了!不到一个月,签约超2000亿见习记者郭玟君刚刚,千亿市值新能源巨头新疆大全新能源股份有限公司(以下简称大全能源)发布公告表示,公司及其全资子公司内蒙古大全新能源有限公司(以下简称内蒙古大全)近日与某客户签订了不愿等预售的年轻人,点起了美妆外卖今年双十一,年度消费热里有着不同往年的景象商家们的发货仓忙碌如常,同时,外卖骑手们在美妆店里穿梭奔忙的新场景,正变得越来越常见。精打细算预先凑单囤货的消费老套路之外,也有另一股逆向万亿元险资看好新能源赛道,头部险企扎堆布局在金融助力实体经济的大政策背景下,险资正在加大对新能源领域投资力度。11月3日,北京商报记者获悉,近日中国人寿保险(集团)公司(以下简称中国人寿)与中国中车集团有限公司将成立新能源200元存银行,15年后只剩88元,为什么越存越少?在15年前存进银行200块,放到今天可以小赚一笔吗?答案是,不能。非但没赚钱,200块还缩水到了88块。惊呆了。前段时间大叔15年的股市收益从1万变到50万的案例尚历历在目,虽说银汇率是怎么回事?这几年,汇率一词很热,比如日本为了保证汇率,进行量化宽松。那么到底什么是汇率?汇率怎么产生的?汇率会对一国经济产生什么影响,杯莫停,与君歌一曲,请君与我倾耳听!汇率什么是汇率?试想