JVM内存区域划分
- 方法区(元数据空间)
- 程序计数器
- java虚拟机栈
- 堆内存
-
存放类的方法区
用于存放自己写的各种类的相关信息,如Kafka.class
-
程序计数器
计算机只能识别字节码指令,当JVM加载类信息到内存后,实际上会使用自己的字节码执行引擎去执行编译出来的代码指令,程序计数器用于记录当前执行的字节码指令的位置
-
java虚拟机栈
java虚拟机栈可以保存每个方法中的局部变量,每个线程都有自己的java虚拟机栈,当一个线程执行一个方法时就会创建对应的一个栈帧
栈帧中包含局部变量表、操作数栈、动态链接、方法出口
每个方法的执行都代表着入栈和出栈
-
堆内存
存放在代码中创建的各种对象,如果一个方法中new了一个对象,那么这个对象的引用类型的局部变量就会存放在栈帧的局部变量表里,new出来的对象是放在堆内存中