【JVM学习笔记】JVM内存结构

JVM内存结构


借鉴文章: (61条消息) JVM原理最全、清晰、通俗讲解,五天40小时吐血整理_小爷欣欣-CSDN博客_jvm详解

一、JVM内存结构图

首先直观的通过下图来认识一下JVM的运行时内存结构:

在这里插入图片描述

JVM使用的内存有可能是在操作系统的堆内存中(博客中谈及,个人未探究)。

二、关于JVM的内存结构

1、虚拟机栈

​ 简单的来说,就是一个栈结构,用来存储指令,运行指令,操作局部变量,记录方法引用和返回地址等。虚拟机栈线程私有,在线程调用start()方法时,会开辟一个栈与之对应。

虚拟机栈的栈帧还细分为以下结构:局部变量表,操作数栈,动态链接,方法返回地址和附加信息。

​ 局部变量表:存储方法中声明以及传入的作用域仅在方法内的变量。

​ 操作数栈:用于执行相应指令的栈。

​ 动态链接:具体调用的方法的变量。

​ 方法返回地址:记录栈帧出栈之后接下来要执行的指令位置。

异常:StackOverflowError,OutOfMemaryError

指令执行时,虚拟机栈的变化如下:

在这里插入图片描述

2、本地方法栈

​ 与虚拟机栈类似,用于执行本地方法。

3、方法区

(1)在虚拟机启动的时候创建。

(2)所有jvm线程共享。

(3)除了和堆一样不需要不连续的内存空间和可以固定大小或者可扩展外,还可以选择不实现垃圾收集。

(4)用于存放已被虚拟机加载的类信息、常量、静态变量、以及编译后的方法实现的二进制形式的机器指令集等数据。

(5)被装载的class的信息存储在Methodarea的内存中。当虚拟机装载某个类型时,它使用类装载器定位相应的class文件,然后读入这个class文件内容并把它传输到虚拟机中。

(6)运行时常量池(Runtime Constant Poo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值