auto commit

This commit is contained in:
CyC2018 2018-03-22 17:15:11 +08:00
parent 100bae3b34
commit d003f433f1

View File

@ -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/)