auto commit
This commit is contained in:
parent
100bae3b34
commit
d003f433f1
15
notes/JVM.md
15
notes/JVM.md
|
@ -64,6 +64,12 @@
|
|||
|
||||
每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。
|
||||
|
||||
可以通过 -Xss 这个虚拟机参数来指定一个程序的 Java 虚拟机栈内存大小:
|
||||
|
||||
```java
|
||||
java -Xss=512M HackTheJava
|
||||
```
|
||||
|
||||
该区域可能抛出以下异常:
|
||||
|
||||
1. 当线程请求的栈深度超过最大值,会抛出 StackOverflowError 异常;
|
||||
|
@ -71,13 +77,15 @@
|
|||
|
||||
## 本地方法栈
|
||||
|
||||
本地方法不是用 Java 实现,对待这些方法需要特别处理。
|
||||
|
||||
与 Java 虚拟机栈类似,它们之间的区别只不过是本地方法栈为本地方法服务。
|
||||
|
||||
## Java 堆
|
||||
|
||||
所有对象实例都在这里分配内存。
|
||||
|
||||
这块区域是垃圾收集器管理的主要区域("GC 堆 ")。现在收集器基本都是采用分代收集算法,该算法的思想是针对不同的对象采取不同的回收算法,因此虚拟机把 Java 堆分成以下三块:
|
||||
是垃圾收集的主要区域("GC 堆 "),现代的垃圾收集器基本都是采用分代收集算法,该算法的思想是针对不同的对象采取不同的垃圾回收算法,因此虚拟机把 Java 堆分成以下三块:
|
||||
|
||||
- 新生代(Young Generation)
|
||||
- 老年代(Old Generation)
|
||||
|
@ -91,9 +99,9 @@
|
|||
|
||||
<div align="center"> <img src="../pics//ppt_img.gif"/> </div><br>
|
||||
|
||||
Java 堆不需要连续内存,并且可以通过动态增加其内存,增加失败会会抛出 OutOfMemoryError 异常。
|
||||
Java 堆不需要连续内存,并且可以通过动态增加其内存,增加失败会抛出 OutOfMemoryError 异常。
|
||||
|
||||
可以通过 -Xms 和 -Xmx 两个虚拟机参数来指定一个程序的 Java 堆内容大小,第一个参数设置最小值,第二个参数设置最大值。
|
||||
可以通过 -Xms 和 -Xmx 两个虚拟机参数来指定一个程序的 Java 堆内存大小,第一个参数设置最小值,第二个参数设置最大值。
|
||||
|
||||
```java
|
||||
java -Xms=1M -XmX=2M HackTheJava
|
||||
|
@ -698,3 +706,4 @@ java -Xmx12m -Xms3m -Xmn1m -XX:PermSize=20m -XX:MaxPermSize=20m -XX:+UseSerialGC
|
|||
|
||||
- 深入理解 Java 虚拟机
|
||||
- [Jvm memory](https://www.slideshare.net/benewu/jvm-memory)
|
||||
- [Memory Architecture Of JVM(Runtime Data Areas)](https://hackthejava.wordpress.com/2015/01/09/memory-architecture-by-jvmruntime-data-areas/)
|
||||
|
|
Loading…
Reference in New Issue
Block a user