我们写好的Java类例如一个HelloWorld.java其实是存放在磁盘上的,一个持久化数据。就算我们把java文件编译成HelloWorld.class的二进制字节码文件,其实也是存放在硬盘上的。但是我们的指令实际却是要在CPU上执行的,而与CPU沟通的桥梁就是内存(Memory),如果我们要去让机器执行我们写好的命令,肯定要将数据读取到内存里面,因为内存的读写效率要比磁盘快太多太多了。
既然JVM被称为Java虚拟机,肯定也是要获取一部分物理内存给虚拟机使用的。而JVM在运行的时候会将划分给自己的内存划分成为不同的数据区域,实现不同的功能,分工明确。深入了解JVM的内存结构是JVM知识体系的核心。
在JVM中,JVM的内存主要分为:虚拟机栈、堆、程序计数器、方法区
和本地方法栈等。
按照线程来归类又分为:
直观图: