Skip to content

Commit 236479f

Browse files
committed
Update Java Notes
1 parent 5546ef0 commit 236479f

File tree

4 files changed

+1313
-290
lines changed

4 files changed

+1313
-290
lines changed

Java.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9461,7 +9461,7 @@ JVM、JRE、JDK对比:
94619461

94629462
### 架构模型
94639463

9464-
Java 编译器输入的指令流是一种基于栈的指令集架构。因为跨平台的设计,java 的指令都是根据栈来设计的,不同平台 CPU 架构不同,所以不能设计为基于寄存器架构
9464+
Java 编译器输入的指令流是一种基于栈的指令集架构。因为跨平台的设计,Java 的指令都是根据栈来设计的,不同平台 CPU 架构不同,所以不能设计为基于寄存器架构
94659465

94669466
* 基于栈式架构的特点:
94679467
* 设计和实现简单,适用于资源受限的系统
@@ -12336,7 +12336,7 @@ public static void main(String[] args) {
1233612336

1233712337
Java 语言:跨平台的语言(write once ,run anywhere)
1233812338

12339-
* 当 Java 源代码成功编译成字节码后,在不同的平台上面运行无须再次编译
12339+
* 当 Java 源代码成功编译成字节码后,在不同的平台上面运行**无须再次编译**
1234012340
* 让一个 Java 程序正确地运行在 JVM 中,Java 源码就必须要被编译为符合 JVM 规范的字节码
1234112341

1234212342
编译过程中的编译器:
@@ -12356,9 +12356,9 @@ Java 语言:跨平台的语言(write once ,run anywhere)
1235612356

1235712357
* JDK 9 引入,是与即时编译相对立的一个概念,即时编译指的是在程序的运行过程中将字节码转换为机器码,AOT 是程序运行之前便将字节码转换为机器码
1235812358

12359-
* 优点:Java 虚拟机加载已经预编译成二进制库,可以直接执行,不必等待即时编译器的预热,减少 Java 应用第一次运行慢的现象
12359+
* 优点:JVM 加载已经预编译成二进制库,可以直接执行,不必等待即时编译器的预热,减少 Java 应用第一次运行慢的现象
1236012360
* 缺点:
12361-
* 破坏了 Java "一次编译,到处运行,必须为每个不同硬件编译对应的发行包
12361+
* 破坏了 Java **一次编译,到处运行**,必须为每个不同硬件编译对应的发行包
1236212362
* 降低了 Java 链接过程的动态性,加载的代码在编译期就必须全部已知
1236312363

1236412364

@@ -12373,7 +12373,7 @@ Java 语言:跨平台的语言(write once ,run anywhere)
1237312373

1237412374
机器码:各种用二进制编码方式表示的指令,与 CPU 紧密相关,所以不同种类的 CPU 对应的机器指令不同
1237512375

12376-
指令:指令就是把机器码中特定的0和1序列,简化成对应的指令,例如mov,inc等,可读性稍好,但是不同的硬件平台的同一种指令(比如mov),对应的机器码也可能不同
12376+
指令:指令就是把机器码中特定的0和1序列,简化成对应的指令,例如 mov,inc 等,可读性稍好,但是不同的硬件平台的同一种指令(比如mov),对应的机器码也可能不同
1237712377

1237812378
指令集:不同的硬件平台支持的指令是有区别的,每个平台所支持的指令,称之为对应平台的指令集
1237912379

@@ -12408,7 +12408,7 @@ Java 语言:跨平台的语言(write once ,run anywhere)
1240812408

1240912409
字节码是一种二进制的类文件,是编译之后供虚拟机解释执行的二进制字节码文件,**一个 class 文件对应一个 public 类型的类或接口**
1241012410

12411-
字节码内容是 JVM 的字节码指令,不是机器码,C、C++ 经由编译器直接生成机器码,所以 C 执行效率比 Java 高
12411+
字节码内容是 **JVM 的字节码指令**,不是机器码,C、C++ 经由编译器直接生成机器码,所以 C 执行效率比 Java 高
1241212412

1241312413
JVM 官方文档:https://docs.oracle.com/javase/specs/jvms/se8/html/index.html
1241412414

Prog.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2488,7 +2488,7 @@ Linux查看CPU缓存行:
24882488

24892489
#### 基本特性
24902490

2491-
VolatileJava虚拟机提供的**轻量级**的同步机制(三大特性)
2491+
volatileJava 虚拟机提供的**轻量级**的同步机制(三大特性)
24922492

24932493
- 保证可见性
24942494
- 不保证原子性

0 commit comments

Comments
 (0)