Java基础之jdk1.8 JVM内存模型简述,含String常量池简单分析

本文介绍了JVM内存模型,包括程序计数器、虚拟机栈、本地方法栈、元空间和堆,特别强调了虚拟机栈中的方法帧和异常情况。同时,对Java 1.8中的String常量池进行了深入分析,通过实例解释了不同情况下String对象的创建和引用关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高楼大厦,都是平地起的。

整个java体系,其实就一本秘籍,那就是java基础!


就我本人这么多年JAVA研发方面的工作经验来看,基础如果打的扎实,在实际开发工作中会带来极大的助益。

最近有个机会整理JAVA基础相关知识,整理到JVM内存模型这部分的时候,画了两张图,记载在此,供感兴趣的新手参考。


第一张:

JDK1.8 - JVM内存模型说明


  • 程序计数器:它的生命周期与线程相同,线程私有。较小的内存区域,用以完成分支、循环、跳转、异常处理、线程恢复等基础功能。不会发生内存溢出(OutOfMemory=OOM)错误。
  • 虚拟机栈:它的生命周期与线程相同,线程私有。虚拟机栈中存储了方法执行时相关信息,每个方法在调用时都会在虚拟机栈中创建一个方法帧,方法帧中包含了局部变量,参数,运行中间结果等信息。帧数超过限制(-Xss),就会出现StackOverFlow(=SOF)错误。另外超过线程分配的内存大小,也会报OOM错误。
  • 本地方法栈:它的生命周期与线程相同,线程私有。基本同虚拟机栈。存放的是native方法帧。可出现SOF和OOM错误。
  • 元空间(MetaSpace):所有线程共享。存放class加载相关信息。
  • 堆:所有线程共享。存放new出来的数组和对象数据,以
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值