自动内存管理机制
对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不需要在为每个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出的问题,Java程序员把内存控制的权力交给了Java虚拟机 运行时数据区域 Java虚拟机在执行java程序的过程中会把他所管理的内存划分为若干个不同的数据区域 程序计数器 (program counter register) 概念: 当前线程所执行的字节码的行号解释器 在虚拟机的概念模型里,字节码解释器工作时通过改变计数器的值选取下一条要执行的字节码指令 在物理上,通过寄存器来实现(读取快) 特点: ① 线程私有,每个线程有一个互不影响,用于线程切换后恢复到正确的执行位置 ② 不存在内存溢出 虚拟机栈 (Java Virtual Machine Stacks) 概念: 栈:栈是线程运行时所需要的内存空间 栈帧:栈里面有一个一个的栈帧,栈帧是每个方法运行时所需的内存,所有的方法再执行时创建一个栈帧,用于存储 ① 局部变量表,② 操作数栈(对应当前的指令,栈帧对应的是方法),③ 动态链接, 方法出口等信息 每调用执行一个方法就会往栈里面压入相应的栈帧,执行完再弹出 局部变量表:存放着编译期间可知的各个基本数据类型,对象引用和returnAddress类型(指向一条字节码指令的地址) 对应着当前正在执行的方法的栈帧叫做活动栈帧 特点: ①