2022新版计算机基础-更适合程序员的编程必备基础知识完结瓯江分类

#1

download:2022新版计算机基础-更适合程序员的编程必备基础知识完结瓯江分类

JVM运行时数据区
1什么是JVM?
JVM可以理解为一种规范。任何高级语言,只要能生成,都可以交给JVM加载执行。类文件。所以不管是Java还是Kotlin,虽然JVM叫Java虚拟机,但是Kotlin会被编译成。由编译器生成并由JVM加载的类文件。所以即使在日常开发工作中使用Kotlin,也需要掌握JVM的原理。
JVM主要由三部分组成:类加载器、运行时数据区和执行引擎。
类加载器:将编译后的类文件加载到JVM内存中;
运行时数据区:主要指文章开头的JVM内存模型,用于存储程序执行过程中产生的数据;
执行引擎:执行字节码指令会和运行时数据区交互,生成的数据会存储在运行时数据区。

2运行时数据区-堆栈内存
本节重点介绍JVM运行时数据区,它主要分为两部分,堆和栈。
2.1堆和栈的职责
根据程序运行时的功能,堆是运行时的存储单元,栈是运行时的处理单元。
也就是说,堆是为了解决数据存储的问题。数据应该存在于哪里?怎么挽回?堆栈是解决程序运行的问题,如何执行程序,如何处理数据,如何执行方法等。
2.2程序计数器
程序计数器也是寄存器,是唯一不会造成内存泄漏的区域;它的主要功能是记录多线程场景中的代码执行位置。
首先,我们来看一个简单的方法。
公共静态void getByteCode() {
int a = 10
int b = 20
int c = a+b;
}
复制代码
当这个方法在JVM中执行时,字节码指令是:
0双脉冲10
2 istore_0
3双推20
5 istore_1
6 iload_0
7 iload_1
8 iadd
9 istore_2
10返回
复制代码
如果有熟悉CPU时间片轮换机制的伙伴,应该知道程序的运行时间是会切片的,每一段都是一个CPU时间片。
对象创建的过程
在日常开发工作中,我们常用的创建对象的方式主要分为以下几种:
(1)由new关键字创建;
(2)通过反思;
(3)通过clone的方法,obj.clone;
(4)序列化或反序列化
接下来,我们以alloc方法为例,看看类是如何被字节码创建的:
0新的#8
3 dup
4调用特殊#9
7 astore_0
8返回