Jvm技术总结

Java程序运行机制和虚拟机内存介绍

先编译,再解释。Java源文件使用javac编译成.class字节码文件,再解释成平台机器码。

Jvm自动内存管理

Jvm内存区域介绍

栈内存存储的是局部变量,堆内存存储的是实体,栈内存更新快,存放的变量生命周期结束之后释放,堆内存存放的实体会被垃圾回收机制不定时回收。
Jvm技术总结_第1张图片

把管理的内存划分成不同的数据区域,方法区、堆 <--->执行引擎 ---->(本地库接口)
虚拟机栈、本地方法栈、程序计数栈<--->本地库接口 ---->本地方法库

  • 程序计数器:较小,当前字节码行号指示器,通过改变值选取下一条指令。各线程之间的计数器互不影响。
  • 虚拟机栈:线程私有,生命周期与线程相同,每个方法执行时创建一个栈帧(Stack Frame),存储局部变量表等信息,局部变量表内存空间分配在编译期间完成
  • 本地方法栈:与虚拟机栈类似,区别为本地方法栈为Native方法服务
  • Java堆:通常来说是内存空间最大的一块儿,被所有线程共享,唯一目的就是存放对象实例。从内存回收角度,又被成为GC(garbage collection)堆,还可细分为新生代,老年代
  • 方法区:与Java堆一样,线程共享,用于存储已被虚拟机加载的类信息、 常量、 静态变量、 即时编译器编译后的代码等数据。这区域的内存回收目标主要是针对常量池的回收和对类型的卸载

你可能感兴趣的:(java)