diff --git a/notes/JVM.md b/notes/JVM.md index e4b18a06..4d3d31a4 100644 --- a/notes/JVM.md +++ b/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 @@