【JVM】剖析JVM内存模型(1)

本文详细介绍了JVM中的方法区(元数据空间)、Java堆和虚拟机栈的作用,以及它们在Java程序执行中的关键角色。同时强调了自我学习的重要性,推荐了《2024年Java开发全套学习资料》,涵盖了基础知识到进阶技术,助力开发者提升技能并应对面试挑战。
摘要由CSDN通过智能技术生成

JVM在执行java程序时的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。

在这里插入图片描述

这里写图片描述

1、方法区(元数据空间)

方法区与Java堆一样,是各个线程共享的内存区域。方法区是jvm的元数据区域,类比成为一张表,一个class文件的信息都是表的一条数据存储在内存中。当方法区无法满足内存分配的需求时,将抛出OutOfMemoryError异常。

  • 当前类名信息

  • 字段信息

  • 方法信息

  • 父类信息

  • 接口信息

  • 引用信息(符号引用=====内存地址引用)

类引引用信息(符号引用【一个字符串【类的权限定名】】=====内存地址引用)

方法引用信息(符号引用【一个字符串【方法描述符】】=====内存地址引用)

字段引用信息(符号引用【一个字符串【字段描述符】】=====内存地址引用)

  • 常量信息

  • 静态变量信息

  • classLoader引用

  • class 对象的实例

2、Java堆

对于大多数应用来说,Java堆是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建,此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。

Java 堆是垃圾回收机制的主要区域。如果Java堆中没有内存完成实例分配,并且堆也无法扩展时,将会抛出OutOfMenoryError错误。

  • 对象头

  • 对象实例数据

  • 对齐填充

3、Java虚拟机栈

Java虚拟机栈也是线程私有的,它描述的是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。

如果线程请求的深度大于虚拟机所允许的深度,将抛出StackOverflowError异常,如果该部分内存扩展时无法申请到足够的内存,则抛出OutOfMemoryError异常。

存储方法编译成字节码的信息

  • 局部变量表(存储参数和局部变量)

  • 操作数栈(执行局部变量存储的变量,进行入栈和出栈)==== 执行引擎

  • 动态链接(执行方法调用,从符号引用装换成直接引用过程)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。

面试题多多少少对于你接下来所要做的事肯定有点帮助,但我更希望你能透过面试题去总结自己的不足,以提高自己核心技术竞争力。每一次面试经历都是对你技术的扫盲,面试后的复盘总结效果是极好的!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值