JVM入门看着一篇就够了

1.为什么会有JVM?

JVM是为了提供一整套完全模拟硬件计算机并进行内存管理(创建和垃圾回收)的标准规范。它是一种规定好的标准规范,定义了字节码文件在内部运行的相关标准和规范

2.JVM到底是什么?

JVM,Java Vitual Machine,中文就是Java虚拟机。和名字一样就是个虚拟机器,来模拟通用的计算机,有着一套虚拟的完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM是基于栈结构的运行方式。不符合这种要求的,不是JVM,比如Dalvik虚拟机就不能称作JAVA虚拟机,因为Dalvik是基于寄存器。至于ART虚拟机是基于_____?

3.JVM的结构是啥样的?

JVM的结构分为三部分:
类装载子系统、运行时数据区、执行引擎。如下图

三者之间的联系如下图:

(1)类装载子系统

what:
将字节码文件加载并生成在堆区的Class对象。
(1)将描述类的字节码文件加载进到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。
(2)类的加载是指将类的.class文件中的二进制数据读入到内存中,然后将其放在运行时数据区的方法区,然后在堆区创建一个Class对象,用来封装类在方法区内的数据结构。类的加载最终产品是位于堆区中的Class对象。Class对象封装类在方法区内的数据结构,并向工程师提供访问方法区的数据结构的接口。

(2)运行时数据区

虚拟机栈、堆区、方法区、本地方法栈区、程序计数器。

(a)栈区

1.保存的数据类型:
基本数据对象 对象应用
2.特点:
(1)存取速度快。
(2)数据大小和生存期确定,缺乏灵活性。

(b)堆区

1.保存的数据类型:
对象
2.特点:
(1)动态分配内存大小。
(2)存取速度慢。

( c)方法区

1.保存的数据类型:
class字节码文件 static变量 常量 常量池
2.特点:
(1)动态分配内存大小。
(2)存取速度慢。

(d)本地方法区

在本地方法栈中执行非java语言编写的代码,例如C/C

(e)程序计数器

1.what
程序计数器是一块较小的内存空间,可以看成当前线程所执行的字节码的行号指示器
2.特点
(1)线程私有
多线程执行时,会分配的是CPU的时间片,当一个线程失去时间片时,需要记录所执行的位置。
(2)JVM的规则中唯一一个没有规定OOM的区域!
记录的是字节码文件的行号,因为在执行前已经知晓范围,所以,不存在OOM
(3)如果正在执行的是Native方法,这个计数器的值为空!
Native方法并没有编译成执行的字节码文件,所以,就不存在字节码文件的行号

(3)执行引擎

1.JVM中的执行引擎充当了将高级语言翻译为机器语言的译者。
2.字节码的执行是由JVM执行引擎来完成

4.相关知识

(1)直接内存

(1)what:
JDK1.4引入的直接操作Native内存的NIO(IO方式),避免了Java的堆内存与Native堆内存的数据复制。
(2)how
堆内存的DirectByteBuffer进行操刀。

5.巨人肩膀

1.https://blog.csdn.net/jiangyang100/article/details/90614280
2.https://www.cnblogs.com/natian-ws/p/10731270.html
3.https://www.cnblogs.com/haimishasha/p/11229379.html
4.https://www.cnblogs.com/ding-dang/p/13086092.html

来源:https://www.icode9.com/content-4-792651.html

(0)

相关推荐

  • 一起来聊一聊JVM虚拟机

    java虚拟机概述和基本概念 堆.栈.方法区 了解虚拟机参数 java虚拟机的原理 所谓的java虚拟机,就是一台虚拟的机器.它是一款软件,用来执行一系列计算指令,大体上虚拟机可以分为系统虚拟机和程序 ...

  • 【jvm】运行时数据区笔记

    运行时数据区包含5个部分: 程序计数器:可以理解为存放当前线程执行的字节码的行号. 虚拟机栈:在每个方法被调用时,都会在虚拟机栈里存放一个栈帧,里边存放了局部变量表.操作.方法出口等内容. - 本地方 ...

  • JVM(一)虚拟机基础

    JVM 全称Java Virtual Machine,也就是我们耳熟能详的Java 虚拟机.它能识别.class 后缀的文件,并且能够解析它的指令,最终调用操作系统上的函数,完成我们想要的操作. Ja ...

  • Jvm基础,快进来复习复习吧~

    大家好,今天总结了一下老生常谈的 JVM,这也是面试必问的知识. 话不多说,整起来!! 1.JVM 是什么? 1.Java 虚拟机(Jvm)是可运行 Java 代码的假想计算机. 2.Jvm 充当着一 ...

  • Java 虚拟机运行时数据区详解

    本文摘自深入理解 Java 虚拟机第三版 概述 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟 ...

  • 真的,关于 Kafka 入门看这一篇就够了

    ImportNew 前天 以下文章来源于Java极客技术 ,作者cxuan Java极客技术java教程 java开发 java入门 java学习 java小课 java进阶 java知识 java技 ...

  • Python爬虫 | 爬虫基础入门看这一篇就够了

    大家好,今天我们来聊聊Python爬虫的基础操作,反正我是这样入门了,哈哈. 其实,一开始学python的时候,我是冲着数据处理分析去了,那个pandas什么的.后来,发现爬虫挺好玩,可以解决纯手工采 ...

  • Python Appium 自动化操作微信入门看这一篇就够了

    Python小二推荐搜索关键词列表:Python爬虫游戏自动化数据分析 简介 Appium 是一个开源的自动化测试工具,支持 Android.iOS 平台上的原生应用,支持 Java.Python.P ...

  • 288页的Python编程文档,从入门到实践,入门看这一篇就够了。

    Python 是一门面向对象,解释型的高级程序设计语言,它的语法非常简洁.优雅,而这也是 Python的一些设计哲学.Python 自带了很完善的库,涵盖了数据库,网络,文件处理,GUI 等方方面面, ...

  • 万字警告!2019年最全、最实用的软笔书法入门指南,看这一篇就够了!

    " 哈喽,墨姐又和大家见面啦! 今天墨姐把自己的学书经历讲给你听,一次性与你分享如何快速入门毛笔字诀窍,满满真诚,没有套路. " 墨姐又陪伴大家渡过了一年.这一年,许多老朋友在习字 ...

  • 心超入门,看这一篇就够了!

    心脏超声是心血管科常用检查,对心血管疾病的诊疗至关重要.作为一项必备技能,除外常规测量,我们究竟要用自己的「火眼金睛」看些什么呢? 下面,我便根据自己平日里的操作习惯,按各切面逐一阐述. 1 胸骨旁左 ...

  • 基金入门,看这一篇就够了(建议收藏)

    引言 基金的基础知识比较多,我摘要出大家的问题,以问答形式给出.下面进入正题. 01 什么是基金? 基金最简答的说法是,你拿钱让基金经理给你投资:不同类型的基金,投资的方向不一样.比如股票型基金,就是 ...

  • 【49讲荷花专集】教程、画谱、名家画荷都有!入门?进阶?看这一篇就够了!

    乐学大讲堂 今天 大家一直期盼的荷花专集,今天终于上线了,汇总了各种图文.视频教程,写意画法与工笔画法,白描素材及画谱,还有名家画荷作品的链接,希望大家能够喜欢!感谢你们的支持,乐学大讲堂的每一步,都 ...

  • 书法入门实用指南:学习书法,看这一篇就够了

    二话不说,先献上大凝写字美图 用疗效说话- 想跟大凝一样一起练字,写一手好字吗? 那就继续往下看吧! 大凝用她学书的经验, 带你快速入门书法! 包括入门字帖.笔墨纸的选择.可能遇到困难等方面内容. 大 ...