JVM 学习 (01_day)
JVM的定义:java Virtual Machine --java程序的运行环境(java二进制字节码的运行环境)
好处:
1、一次运行,到处运行
2、自动内存管理机制,垃圾回收功能
补充:数组下标越界检查;多态;
比较:
JVM
二、学习路线
三、JVM内存结构
1、程序计数器(Program Counter Register)
作用:用于记住下一条JVM指令的执行地址
特点:
* 线程私有
* 不会存在内存溢出
2、虚拟机栈(JVM Stacks)
-
每个线程运行时需要的内存空间
-
每个由多个栈帧组成,(栈帧:每个方法运行时需要的内存)
-
每个线程只能有一个活动栈帧,对应着当前正在执行的方法
`** -
演示栈帧
-
@author seven
-
@create 2021-12-20 20:08
*/
public class Demo_01 {
public static void main(String[] args) {
method1();
}
private static void method1(){
method2(1,2);
}private static int method2(int a,int b){
int c=a+b;
return c;
}
}`
问题辨析:
1、垃圾回收是否涉及栈内存?
没有涉及,虚拟机栈是由一个个栈帧组成,而这些栈帧就是等待执行的方法。当方法执行后,对应的栈帧就会被弹出栈。
2、栈内存分配越大越好吗?
物理内存是一定的,栈内存越大,可执行的线程就越少。
3、方法内的局部变量是否线程安全?
如果方法内局部变量没有逃离方法的作用范围,则是线程安全的。
如果局部变量中引用了对象,并逃离了方法的作用范围,则需要考虑线程安全问题。