运行时数据区,执行引擎,本地方法库,本地库接口
- 执行引擎:解释代码
- 本地方法库:系统底层方法库(C语言)
Java虚拟机运行时数据区
虚拟机栈,本地方法栈,程序计数器,方法区,堆。
-
虚拟机栈:
存放引用,基本数据类型,方法局部变量 -
本地方法栈:
存放在java中本地方法的声明
通过JNI(Java Native Interface)技术调用 -
程序计数器:
行号指示器,正在执行的虚拟机指令的地址。
JVM中唯一没有OOM的区域 -
堆:
对象实例
ps:栈上分配,标量替换技术使有些小对象在栈不在堆
新生代(Eden+2Survivor),老年代 -
方法区:
类信息,常量,静态变量,编译后代码
People p = new People(); 在堆上还是栈上分配?
People p = new People();
分为三步:
-
People p;
p为一个变量 -> 在栈上分配内存 -
new People();
在堆上生成对象 -
p = new People
栈上变量p指向堆上People对象地址
网友评论