auto commit
This commit is contained in:
parent
77d820b625
commit
5e5bd51975
@ -28,6 +28,8 @@
|
|||||||
<!-- GFM-TOC -->
|
<!-- GFM-TOC -->
|
||||||
|
|
||||||
|
|
||||||
|
本文大部分内容参考 **周志明《深入理解 Java 虚拟机》** ,想要深入学习请看原书。
|
||||||
|
|
||||||
# 一、运行时数据区域
|
# 一、运行时数据区域
|
||||||
|
|
||||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/5778d113-8e13-4c53-b5bf-801e58080b97.png" width="400px"> </div><br>
|
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/5778d113-8e13-4c53-b5bf-801e58080b97.png" width="400px"> </div><br>
|
||||||
@ -38,11 +40,11 @@
|
|||||||
|
|
||||||
## Java 虚拟机栈
|
## Java 虚拟机栈
|
||||||
|
|
||||||
每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。
|
每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。
|
||||||
|
|
||||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/8442519f-0b4d-48f4-8229-56f984363c69.png" width="400px"> </div><br>
|
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/8442519f-0b4d-48f4-8229-56f984363c69.png" width="400px"> </div><br>
|
||||||
|
|
||||||
可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小:
|
可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小:,
|
||||||
|
|
||||||
```java
|
```java
|
||||||
java -Xss512M HackTheJava
|
java -Xss512M HackTheJava
|
||||||
|
@ -38,7 +38,7 @@ Unix 有五种 I/O 模型:
|
|||||||
|
|
||||||
应用进程被阻塞,直到数据从内核缓冲区复制到应用进程缓冲区中才返回。
|
应用进程被阻塞,直到数据从内核缓冲区复制到应用进程缓冲区中才返回。
|
||||||
|
|
||||||
应该注意到,在阻塞的过程中,其它应用进程还可以执行,因此阻塞不意味着整个操作系统都被阻塞。因为其它应用进程还可以执行,所以不消耗 CPU 时间,这种模型的 CPU 利用率效率会比较高。
|
应该注意到,在阻塞的过程中,其它应用进程还可以执行,因此阻塞不意味着整个操作系统都被阻塞。因为其它应用进程还可以执行,所以不消耗 CPU 时间,这种模型的 CPU 利用率会比较高。
|
||||||
|
|
||||||
下图中,recvfrom() 用于接收 Socket 传来的数据,并复制到应用进程的缓冲区 buf 中。这里把 recvfrom() 当成系统调用。
|
下图中,recvfrom() 用于接收 Socket 传来的数据,并复制到应用进程的缓冲区 buf 中。这里把 recvfrom() 当成系统调用。
|
||||||
|
|
||||||
|
@ -28,6 +28,8 @@
|
|||||||
<!-- GFM-TOC -->
|
<!-- GFM-TOC -->
|
||||||
|
|
||||||
|
|
||||||
|
本文大部分内容参考 **周志明《深入理解 Java 虚拟机》** ,想要深入学习请看原书。
|
||||||
|
|
||||||
# 一、运行时数据区域
|
# 一、运行时数据区域
|
||||||
|
|
||||||
<div align="center"> <img src="pics/5778d113-8e13-4c53-b5bf-801e58080b97.png" width="400px"> </div><br>
|
<div align="center"> <img src="pics/5778d113-8e13-4c53-b5bf-801e58080b97.png" width="400px"> </div><br>
|
||||||
@ -38,11 +40,11 @@
|
|||||||
|
|
||||||
## Java 虚拟机栈
|
## Java 虚拟机栈
|
||||||
|
|
||||||
每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。
|
每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。
|
||||||
|
|
||||||
<div align="center"> <img src="pics/8442519f-0b4d-48f4-8229-56f984363c69.png" width="400px"> </div><br>
|
<div align="center"> <img src="pics/8442519f-0b4d-48f4-8229-56f984363c69.png" width="400px"> </div><br>
|
||||||
|
|
||||||
可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小:
|
可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小:,
|
||||||
|
|
||||||
```java
|
```java
|
||||||
java -Xss512M HackTheJava
|
java -Xss512M HackTheJava
|
||||||
|
@ -38,7 +38,7 @@ Unix 有五种 I/O 模型:
|
|||||||
|
|
||||||
应用进程被阻塞,直到数据从内核缓冲区复制到应用进程缓冲区中才返回。
|
应用进程被阻塞,直到数据从内核缓冲区复制到应用进程缓冲区中才返回。
|
||||||
|
|
||||||
应该注意到,在阻塞的过程中,其它应用进程还可以执行,因此阻塞不意味着整个操作系统都被阻塞。因为其它应用进程还可以执行,所以不消耗 CPU 时间,这种模型的 CPU 利用率效率会比较高。
|
应该注意到,在阻塞的过程中,其它应用进程还可以执行,因此阻塞不意味着整个操作系统都被阻塞。因为其它应用进程还可以执行,所以不消耗 CPU 时间,这种模型的 CPU 利用率会比较高。
|
||||||
|
|
||||||
下图中,recvfrom() 用于接收 Socket 传来的数据,并复制到应用进程的缓冲区 buf 中。这里把 recvfrom() 当成系统调用。
|
下图中,recvfrom() 用于接收 Socket 传来的数据,并复制到应用进程的缓冲区 buf 中。这里把 recvfrom() 当成系统调用。
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user