JVM(一)

  • JVM概述
    • 计算机系统中JVM所处的位置
    • 什么是java虚拟机(JVM)?
    • JVM体系结构概览
    • JVM生命周期
      • 1.启动
      • 2.执行
      • 3.退出
    • 各种JVM

JVM概述

计算机系统中JVM所处的位置


JVM是运行在操作系统之上的,并没有和硬件有直接的交互

什么是java虚拟机(JVM)?

java虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统

Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行

JVM体系结构概览


1.方法区和堆区是所有线程共享的内存区域;而java栈、本地方法栈和程序员计数器是运行是线程私有的内存区域。

2.Java栈又叫做jvm虚拟机栈

3.方法区(永久代)在jdk8中又叫做元空间Metaspace

  • 方法区用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器(JIT编译器,英文写作Just-In-Time Compiler)编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做 Non-Heap(非堆),目的应该是与 Java 堆区分开来。
  • 在JDK1.7之前运行时常量池逻辑包含字符串常量池存放在方法区, 此时hotspot虚拟机对方法区的实现为永久代
  • 在JDK1.7 字符串常量池被从方法区拿到了堆中, 这里没有提到运行时常量池,也就是说字符串常量池被单独拿到堆,运行时常量池剩下的东西还在方法区, 也就是hotspot中的永久代
  • 在JDK1.8之后JVM 已经将运行时常量池从方法区中移了出来,在 Java 堆(Heap)中开辟了一块区域存放运行时常量池。同时在 jdk 1.8中移除整个永久代,取而代之的是一个叫元空间(Metaspace)的区域。

4.java代码执行流程:
java程序–(编译javac)–>字节码文件.class–>类装载子系统化身为反射类Class—>运行时数据区—>(解释执行)–>操作系统(Win,Linux,Mac JVM)

JVM生命周期

1.启动

通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的.

2.执行

  • 一个运行中的java虚拟机有着一个清晰的任务:执行Java程序;程序开始执行的时候他才运行,程序结束时他就停止;
  • 执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程。

3.退出

  • 程序正常执行结束
  • 程序异常或错误而异常终止
  • 操作系统错误导致终止
  • 某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且java安全管理器也允许这次exit或halt操作
  • 除此之外,JNI规范描述了用JNI Invocation API来加载或卸载Java虚拟机时,Java虚拟机的退出情况

各种JVM

  • SUN Classic
  • Exact VM
  • HotSpot VM :HotSpot指热点代码探测技术
  • BEA JRockit:(BEA 已被Oracle收购) 专注于服务端应用,世界最快的jvm之一
  • IBM J9
  • Taobao JVM: 目前已经在淘宝、天猫上线,替换了Oracle官方JVM;
  • Graal VM: Oracle 2018年4月公开,口号 Run Programs Faster
  • Anywhere.最可能替代HotSpot的产品

总结

深入理解java虚拟机(一)之JVM概述相关推荐

  1. linux查看java虚拟机内存_深入理解java虚拟机(linux与jvm内存关系)

    本文转载自美团技术团队发表的同名文章 https://tech.meituan.com/linux-jvm-memory.html 一, linux与进程内存模型 要理解jvm最重要的一点是要知道jv ...

  2. java虚拟机和内存的关系_深入理解java虚拟机(linux与jvm内存关系)

    本文转载自美团技术团队发表的同名文章 https://tech.meituan.com/linux-jvm-memory.html 一, linux与进程内存模型 要理解jvm最重要的一点是要知道jv ...

  3. 深入理解java虚拟机之类加载机制

    回顾我们<深入理解java虚拟机之初识JVM>,我们了解了类加载的过程,我们知道了类加载的生命周期有以下七个阶段:加载.验证.准备.解析.初始化.使用.卸载.其中解析和初始化交换顺序可以实 ...

  4. 深入理解JAVA虚拟机学习笔记(一)JVM内存模型

    摘要:   上周末搬家后,家里的宽带一直没弄好,跟电信客服反映了N遍了终于约了个师傅明天早上来迁移宽带,可以结束一个多星期没网的痛苦日子了.这段时间也是各种忙,都一个星期没更新博客了,再不写之前那种状 ...

  5. 深入理解java虚拟机JVM(上)

    深入理解java虚拟机JVM(上) 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App,操作更 ...

  6. 《深入理解java虚拟机》(Jvm)一篇概括

    目录 1.Java内存区域与内存溢出异常 2.垃圾收集器与内存分配策略 3.虚拟机性能监控与故障处理工具 4.调优案例分析与实战 5.类文件结构 6.虚拟机类加载机制 7.虚拟机字节码执行引擎 8.类 ...

  7. 深入理解Java虚拟机——JVM垃圾回收机制和垃圾收集器详解

    一:概述 说起垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,顾名思义,垃圾回收就是释 ...

  8. 深入理解java虚拟机JVM(下)

    深入理解java虚拟机JVM(下) 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App,操作更 ...

  9. 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)读书笔记

    前言 我在读 深入理解java虚拟机 这本书,把整体其中的关键点标记了,希望自己对它有个不一样的理解,也希望大家能看看这本写的很好的书 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) pd ...

  10. 深入理解Java虚拟机(第三弹)- JVM 内存分配与回收策略原理,从此告别 JVM 内存分配文盲

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:打卡活动第二期来啦,100% 能获得奖品个人原创+1博客:点击前往,查看更多 虚拟机系列文章 深入理解 Java ...

最新文章

  1. error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏的解决方案
  2. Linux系统文件类型 特殊文件 和 进程间通信机制
  3. java模式之装饰模式
  4. 64位操作系统上ArcGIS Server Manager页面不正常显示
  5. Cassandra 权威指南
  6. 【python】文件打开中文符问题
  7. java中递归算法_java中递归算法是什么怎么算的?
  8. GBK编码转换及Md5算法工具
  9. inav是什么意思?
  10. MYSQL Error:You must SET PASSWORD before execut...
  11. My97datepicker时间控件的简单使用
  12. 字符分割函数strtok
  13. ERROR 1449 (HY000)
  14. h5做app和原生app有什么区别?
  15. 如何使用SC7A20
  16. 公众号微信朋友圈分享提示签名失败 easywechat 微信朋友圈分享签名失败
  17. 国徽FLASH SM25QH256M烧录问题总结
  18. 电脑硬盘分区不见了怎么恢复数据?方法来啦
  19. The Fifty-second Of Word-Day
  20. 一文了解黄金票据和白银票据

热门文章

  1. 网页设计是要学php还是java_网页设计师需要学习什么?
  2. 如何裁剪动图的尺寸?怎样快速裁剪gif动图?
  3. 华为或首次成为年度销量第二大手机品牌,明年将迎来更大挑战
  4. 小狼毫输入法不能输入中文的解决办法
  5. 朗逸更换变速箱油教程
  6. python pycrypto_Python使用PyCrypto实现AES加密功能示例
  7. 使用 CSS3 jQuery 制作漂亮的书签动画
  8. 2021寒假MISC打卡DAY4
  9. 探索基于计算机的数字音频工作站
  10. OSChina 周日乱弹 ——被吐槽码农怎么办?