类装载系统
运行时数据区
- 方法区
存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码。
JDK8已经使用Metaspace(元空间)完全替代永久代(方法区),且元空间不在JVM中,是使用的本地内存,受操作系统内存限制 - 堆空间
存放对象实例,几乎所有的对象实例都在这里分配内存。堆和常量池内存不足的时候,会报OutOfMemoryError - 虚拟机栈
每一线程创建一个单独的运行时栈,对于每一个方法调用,一个称为栈内存栈针被创建。所有的局部变量都在栈内存中被创建,栈区域是线程安全的。
虚拟机栈的生命周期和线程一样,栈内存用光了,会触发StackOVerFlowError - 本地方法栈
与虚拟机栈功能类似,只不过虚拟机栈为java方法服务,本地方法栈为native方法服务 - 程序计数器
记录栈帧运行的位置。
Java执行引擎
通过类装载器装载的,被分配到JVM的运行时数据区的字节码会被执行引擎执行,执行引擎以指令为单位读取Java字节码,它像cpu一样一条一条
的执行指令,每个指令由一个字节的操作码和附加的字节操作数组成,执行引擎取得一个操作码,然后根据操作数来执行任务,完成一个,就执行下一个操作码。
原文地址:https://www.jb51.cc/wenti/3284246.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。