jvm与java体系结构(概述)

前言

  • 我们的应用程序的架构一般都是这样 可以看出jvm是最底层
  • 很多人只注重如何使用框架去搭建我们的应用程序,而不关注我们的java底层的。其实这个思想是错的,要想为什么我们的项目上线会挂, 当他出现这种情况的时候我们应该怎么解决, 而不是作为一个只会选择默认值, 出错也只会傻看着等待别人救助的小白鼠,我们如果想做个掌握雷电的人就开始着手学习jvm把!
  • 在这里插入图片描述
  • 我们在这思考两个问题 希望学完jvm能够解决
    • 应该如何让我的系统更快?
    • 如何避免系统出现瓶颈?
  • 跟着这篇文章走进这个神秘的jvm!

参考书籍

  • 深入理解java虚拟机
  • 实战java虚拟机
  • 官方的java规范
  • 视频:尚硅谷jvm视频

jvm的位置

jvm是运行在操作系统之上的,它与硬件是没有交互的
java虚拟机就是二进制字节码文件的运行环境
jdk、jre、jvm三者的关系:

  • jdk是程序员开发的工具包, 它包括了java的一些命令javac编译需要用到
  • jre运行环境(运行时类库)VA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
  • JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

在这里插入图片描述

特点:

  • 一次编译,到处运行
  • 自动内存管理
  • 自动垃圾回收功能
    对于电脑来说:是基于操作系统之上
    在这里插入图片描述
    java官网的jvm
    java程序要想运行成功
    • 写成.java的文件 编译成.class文件 叫前端编译器(javac)
    • 解释运行 后端编译器(jvm做的)
      在这里插入图片描述

jvm的整体结构

  • 它采用解释器与及时编译器并存的架构(hotspot虚拟机)
  • 多线程共享方法区和堆, 而栈本地方法栈和程序计数器是每个线程独有一份的。在这里插入图片描述

java代码执行流程

java对字节码文件的格式要求非常严格很难攻破(可以试试哈哈)
有个有趣的事情便是 java的二进制字节码文件的开头是个cafe刚好对上jdk的吉祥物图标。用sublime-Text打开
在这里插入图片描述

架构模型

java的虚拟机是一种基于栈的指令集架构(只有程序计数器), 而另一种指令集架构是基于寄存器的
二者的区别:

  • 基于栈
  • 设计简单
  • 指令集小、指令多
  • 不需要硬件的支持可移植性好, 编译器容易实现
  • 避开了寄存器的分配难题但是相同情况下指令多
  • 执行性能差
  • 基于寄存器
  • 指令集庞大
  • 依赖于硬件可移植性差
  • 性能更加优秀
  • 花费更少的指令去完成一项操作

jvm的生命周期

  • 虚拟机的启动
    java虚拟机的启动时通过引导类加载器创建一个初始类来完成的,,这个类是由虚拟机的具体实现指定的。
  • 虚拟机的执行
    • 一个运行中的java虚拟机有一个清晰的任务, 执行java程序
    • 程序开始执行它才运行, 程序结束就停止
    • 执行一个所谓的java程序的时候, 真真正正在执行的是一个叫做java虚拟机的进程
  • 虚拟机的退出

第一章到此结束

本章主要讲的是jvm的发展历程以及重大事件,和它的重要性体系结构等, 相当于一个概述,下章主要讲内存结构

第二章已更新

链接:第二章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值