当前位置: 首页 > news >正文

兼职做Ppt代抄论文的网站/2022黄页全国各行业

兼职做Ppt代抄论文的网站,2022黄页全国各行业,宜兴网站策划,没有域名 怎么做网站链接2019独角兽企业重金招聘Python工程师标准>>> 作为一位 Java 程序员,在尽情享受 Java 虚拟机带来好处的同时,我们还应该去了解和思考“这些技术特性是如何实现的”,去了解最底层的原理。只有熟悉 JVM,你才能在遇到 OutO…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

作为一位 Java 程序员,在尽情享受 Java 虚拟机带来好处的同时,我们还应该去了解和思考“这些技术特性是如何实现的”,去了解最底层的原理。只有熟悉 JVM,你才能在遇到 OutOfMemory 等异常时,不会束手无策。

第一大知识要点:Java 字节码是如何在虚拟机里运行的?

我将以 HotSpot 虚拟机为例,从虚拟机以及底层硬件两个角度,来分享解析。

1、从虚拟机视角来看

执行 Java 代码首先需要将它编译而成的 class 文件加载到 Java 虚拟机中。加载后的 Java 类会被存放于方法区中。实际运行时,虚拟机会执行方法区内的代码。

image.php?url=0KK8Xo4RTI

在运行过程中,每当调用进入一个 Java 方法,Java 虚拟机会在当前线程的 Java 方法栈中生成一个栈帧,用以存放局部变量以及字节码的操作数。这个栈帧的大小是提前计算好的,而且 Java 虚拟机不要求栈帧在内存空间里连续分布。

当退出当前执行的方法时,不管是正常返回还是异常返回,Java 虚拟机均会弹出当前线程的当前栈帧,并将之舍弃。

image.php?url=0KK8XoMnGB

2、从硬件视角来看

Java 字节码无法直接执行。因此,Java 虚拟机需要将字节码翻译成机器码。

在 HotSpot 里面,上述翻译过程有两种形式:第一种是解释执行,相当于同声传译,即每解析一条字节码,便翻译成机器码并执行;第二种是即时编译(Just-In-Time compilation,JIT),则相当于线下翻译,即将整个方法中所包含的字节码统一翻译成机器码后在执行。

前者的优势在于无需等待编译,而后者的优势在于实际运行速度更快。HotSpot 默认采用混合模式,综合了解释执行和即时编译两者的优点。它会先解释执行字节码,而后将其中反复执行的热点代码,以方法为单位进行即时编译。

image.php?url=0KK8Xo4RTI

第二大知识要点:Java 虚拟机是如何加载 Java 类的?

Java 虚拟机加载 Java 类的过程可分为加载、链接以及初始化三大步骤。

加载是指查找字节流,并且据此创建类的过程。加载需要借助类加载器,在 Java 虚拟机中,类加载器使用了双亲委派模型,即接收到加载请求时,会先将请求转发给父类加载器。

image.php?url=0KK8XoM8AV

 

链接,是指将创建成的类合并至 Java 虚拟机中,使之能够执行的过程。链接还分验证、准备和解析三个阶段,分别完成“验证被加载类是否满足 Java 虚拟机约束”,“为被加载类静态字段分配内存”,以及“将被加载类中的符号引用解析成为实际引用”的工作。

初始化,则是为标记为常量值的字段赋值,以及执行 <clinit> 方法的过程。类的初始化仅会被执行一次,这个特性被用来实现单例的延迟初始化。

第三大知识要点:Java 虚拟机是如何进行垃圾回收的?

回收垃圾对象的内存共有三种基础算法,分别为:会造成内存碎片的清除算法、性能开销较大的压缩算法、以及堆使用效率较低的复制算法。

通常来说,Java 虚拟机会采用分代回收的思想,将堆划分为新生代和老年代,并且通过在不同代中应用不同的垃圾回收算法。

image.php?url=0KK8Xoyb6K

第四大知识要点:Java 内存模型是什么?

在现代计算机系统中,代码通常不会按照书写顺序执行。造成这一情况的原因有三个,分别为编译器的重排序,处理器的乱序执行,以及内存系统的重排序。

Java 内存模型是一套规范,用以允许 Java 程序员更为细致地定义 Java 程序的内存行为。它通过定义了一系列的 happens-before 操作,让应用程序开发者能够轻易地表达不同线程的操作之间的内存可见性。在遵守 Java 内存模型的前提下,即时编译器以及底层体系架构能够调整内存访问操作,以达到性能优化的效果。如果开发者没有正确地利用 happens-before 规则,那么将可能导致数据竞争。

image.php?url=0KK8Xo31Vm

好了,关于这篇文章的分析到这里就高一段落了,如果还有没有说明的,欢迎大家在评论区留言补充哦。

工作一到五年的java 开发工程师朋友可以加入我们Java架构交流平台:760940986
群内提供 高可用,高并发,spring源码,mybatis源码,JVM,大数据,Netty等多个技术知识的架构视频资料
还有大把大牛在群内交流以及解答面试指导,问题答疑~~要进来和大牛交流学习提升提升自己吗~~~~

转载于:https://my.oschina.net/u/3906190/blog/2251281

http://www.jmfq.cn/news/5284531.html

相关文章:

  • 网站banner制作/网站站长工具
  • 情侣做记录网站源码/百度扫一扫入口
  • 个人网站 怎么备案/短视频获客系统
  • 留学网站模板/外贸营销推广
  • 网站模板怎么用dreamweaver编辑/网站关键词优化有用吗
  • 创立一个公司需要什么/seo是一种利用搜索引擎
  • 表白网页在线生成网站/周口网站制作
  • 印刷行业网站建设/台州seo网站排名优化
  • 在线医疗网站建设/武汉百度开户电话
  • 找做金融的网站有哪些/网站结构优化的内容和方法
  • 西安网站开发公司定制/经典品牌推广文案
  • 东莞网站seo优化托管/免费推广自己的网站
  • wordpress+海+主题/seo网络优化软件
  • 福州制作网站软件/杭州seo服务公司
  • 建行商城网站/芭蕉视频app无限次数
  • 网站开发什么是会话/如何做电商新手入门
  • 应聘的做网站推广的/苏州网站制作公司
  • 便宜购 网站建设/seo公司官网
  • 徐汇做网站/找培训班一般在什么平台
  • 东莞市长安镇做网站/营销咨询顾问
  • 网站建设用cms/晚上网站推广软件免费版
  • 网站 502错误/培训机构管理系统哪个好
  • 个人建设网站程序/百度关键词搜索技巧
  • 领地申请的网站能备案吗/市场营销公司
  • 电商网站分析报告/seo是什么意思蜘蛛屯
  • 专业网站建设套餐/企业培训课程ppt
  • 胶州网站搭建公司/大型seo公司
  • 如何在网站投放广告/一键开发小程序
  • 做网站即墨/我赢seo
  • 读心王爷太难缠/seo整站优化费用