1. 概述
对于 Java 程序员来说,在虚拟机⾃动内存管理机制下,不再需要像 样为每⼀个 new 操作去写对应的 delete / C/C++ 程序开发程序员这 free 操作,不容易出现内存泄漏和内存溢出问 题。正是因为 Java 程序把内存控制权利交给 JVM 虚拟机。⼀旦出现内存泄漏和溢出⽅⾯的问题, 如果不了解虚拟机是怎样使⽤内存的,那么排查错误将会是⼀个⾮常艰巨的任务。
2. 运⾏时数据区域划分
JVM 虚拟机在执⾏ Java 程序的过程中会把它管理的内存划分成若⼲个不同的数据区域。
3. 程序计数器(Program Counter Register)
4. Java 虚拟机栈(VM Stack)
与程序计数器⼀样, VM Stack 虚拟机栈也是线程私有的,它的⽣命周期和线程相同,⽤于描述 Java ⽅法执⾏时的内存模 型,每次⽅法调⽤的数据都是通过栈传递的。