JVM 学习记录

2020-09-03  本文已影响0人  Marker_Sky

一、Java

1.1 Java 技术体系包含什么?

Java 技术体系包含Java 程序设计语言Java 虚拟机Class 文件格式Java API 类库

image.png
1.2 什么是 JDK?

JDK 是 Java Development Kit(Java开发工具)的简称,也就是说要开发 Java 程序,需要的一些组件。

我们安装 JDK 的时候,一般都包含上述内容。

1.3 什么是 JRE?

Java Runtime Environment(Java运行环境)的简称,也就是说要跑 Java 代码,需要哪些什么样的运行环境支持。

JRE 被包含于 JDK 中,我们可以只选择安装 JRE 用来跑 Java 而不是用来开发。

二、JVM

2.1 什么是 JVM?
定义:

Java 虚拟机是一种抽象化的计算机,在实际上的计算机模拟各种计算机功能来实现。

正是因为模拟了一台计算机,所以可以方便地在其它计算机环境下运行。
就比如市面上的 GBA、NES 游戏模拟器,模拟了游戏运行环境,可以在手机、电脑等设备上运行,实现执行游戏文件的功能。Java 也是类似的过程实现了跨平台运行。

JVM 数据类型

2.2 JVM 支持的数据类型

JVM 操作的数据类型也可以分为两类:

JVM 希望尽可能多的在编译期完成类型检查,这样在运行期就无需动态确认类型了。

原始类型:
类型 位数 默认值 取值范围
byte 8位有符号 0 -128(-2^7)~ 127(2^7-1)
short 16位有符号 0 -32768(-2^15)~ 32767(2^15 - 1)
int 32位有符号 0 -2,147,483,648(-2^31)~ 2,147,483,647(2^31 - 1)
long 64位有符号 0 -9,223,372,036,854,775,808(-2^63)~ 9,223,372,036,854,775,807(2^63 -1)
char 16位无符号 Unicode 的 null ('\u0000') \u0000 ~ \uffff
float 单精度、32位 0 -
double 双精度、64位 0 -
boolean Oracle公司的虚拟机编码为 byte 数组,每个 boolean 占 8 位 0-false 1-true -
引用类型:

JVM 引用类型包含三种:

2.3 JVM 运行时数据区域

虚拟机运行的时候会把内存划分为若干个不同的区域

image.png
1. 程序计数器(pc寄存器)
定义:

程序计数器又称 pc(program counter) 寄存器,用来储存下一条指令执行的地址。

作用:
特点:
2. Java 虚拟机栈

Java 虚拟机栈是Java方法运行过程的内存模型。

作用:
特点:

人们常说,Java的内存空间分为“栈”和“堆”,栈中存放局部变量,堆中存放对象。
这句话不完全正确!这里的“堆”可以这么理解,但这里的“栈”只代表了Java虚拟机栈中的局部变量表部分。真正的Java虚拟机栈是由一个个栈帧组成,而每个栈帧中都拥有:局部变量表、操作数栈、动态链接、方法出口信息。

本地方法栈:

主要用于为 Native 方法服务,与 Java 虚拟机栈的实现类似,也是可以创建一个个栈帧、也会抛出 StackOverflowError 和 OutOfMemoryError 异常。

3. JVM 方法区
image.png
作用:
方法区主要包含内容:

符号引用:字面上的一个引用,作为标识用。因为编译期无法获取到该类的实际地址,只能用符号来表示地址。

特点:
运行时常量池:

方法区中存放三种数据:类信息、常量、静态变量、即时编译器编译后的代码。其中常量存储在运行时常量池中。

作用:
特点:
4. 堆

用来存放对象的空间。

作用:
特点:
5. 直接内存

直接内存是除Java虚拟机之外的内存,但也有可能被Java使用。

在NIO中引入了一种基于通道和缓冲的IO方式。它可以通过调用本地方法直接分配Java虚拟机之外的内存,然后通过一个存储在Java堆中的DirectByteBuffer对象直接操作该内存,而无需先将外面内存中的数据复制到堆中再操作,从而提升了数据操作的效率。

直接内存的大小不受Java虚拟机控制,但既然是内存,当内存不足时就会抛出OOM异常。

参考资料:

https://blog.csdn.net/dc2222333/article/details/82940649
https://blog.csdn.net/zero__007/article/details/100061611
https://blog.csdn.net/qq_41701956/article/details/81664921

上一篇 下一篇

猜你喜欢

热点阅读