说一下 JVM 运行时数据区 ?

目录

[一、程序计数器(Program Counter Register)](#一、程序计数器(Program Counter Register))

[二、Java 虚拟机栈(Java Virtual Machine Stacks)](#二、Java 虚拟机栈(Java Virtual Machine Stacks))

[三、本地方法栈(Native Method Stack)](#三、本地方法栈(Native Method Stack))

[四、Java 堆(Java Heap)](#四、Java 堆(Java Heap))

[五、方法区(Methed Area)](#五、方法区(Methed Area))


一、程序计数器(Program Counter Register)

当前线程所执行的字节码的行号指示器,字节码解析器的工作是通过改变这个计数器的值,来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能,都需要依赖这个计数器来完成(为什么要线程计数器?因为线程是不具备记忆功能)

二、Java 虚拟机栈(Java Virtual Machine Stacks)

每个方法在执行的同时都会在Java 虚拟机栈中创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息;(栈帧就是Java虚拟机栈中的一个单位)

三、本地方法栈(Native Method Stack)

与虚拟机栈的作用是一样的,只不过虚拟机栈是服务 Java方法的,而本地方法栈是为虚拟机调用 Native 方法服务的;(Native 关键字修饰的方法是看不到的,Native 方法的源码大部分都是 C和C++ 的代码)

四、Java 堆(Java Heap)

Java 虚拟机中内存最大的一块,是被所有线程共享的,几乎所有的对象实例都在这里分配内存;

五、方法区(Methed Area)

用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。

相关推荐
吾日三省吾码3 小时前
JVM 性能调优
java
弗拉唐4 小时前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
oi774 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
少说多做3435 小时前
Android 不同情况下使用 runOnUiThread
android·java
知兀5 小时前
Java的方法、基本和引用数据类型
java·笔记·黑马程序员
蓝黑20205 小时前
IntelliJ IDEA常用快捷键
java·ide·intellij-idea
Ysjt | 深5 小时前
C++多线程编程入门教程(优质版)
java·开发语言·jvm·c++
shuangrenlong5 小时前
slice介绍slice查看器
java·ubuntu
牧竹子5 小时前
对原jar包解压后修改原class文件后重新打包为jar
java·jar