社区
Java SE
帖子详情
Java虚拟机内存模型
临世驻年
2020-07-23 10:09:20
解释一下Java虚拟机内存模型
...全文
820
2
打赏
收藏
Java虚拟机内存模型
解释一下Java虚拟机内存模型
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SpiritPoss
2020-07-23
打赏
举报
回复
JVM虚拟机将内存数据分为:
程序计数器虚拟机栈本地方法栈Java堆方法区等部分。程序计数器用于存放下一条运行的指令;虚拟机栈和本地方法栈用于存放函数调用堆栈信息;Java堆用于存放Java程序运行时所需的对象等数据;方法区用于存放程序的类元数据信息。
1、程序计数器
每一个线程都必须有一个独立的程序计数器,用于记录下一条要运行的指令。各个线程之间的计数器互不影响,独立工作;是一块线程私有的内存空间。
如果当前程序正在执行一个Java方法,则程序计数器记录正在执行的Java字节码地址,如果当前线程正在执行一个Native方法,则程序计数器为空。
2、Java虚拟机栈
Java虚拟机栈也是线程的私有空间,它和Java线程在同一时间创建,它保存方法的局部变量、部分结果,并参与方法的调用和返回。
在Java虚拟机规范中,定义了两种异常与栈空间有关:StackOverflowError 和 OutOfMemoryError。
在 HotSpot 虚拟机中,可以使用 -Xss 参数(如:-Xss1M)来设置栈的大小。栈的大小直接决定了函数调用的可达深度。
虚拟机栈在运行时使用一种叫做栈帧的数据结构保存上下文数据。在栈帧中,存放了方法的局部变量表、操作数栈、动态连接方法和返回地址等信息。每一个方法的调用都伴随着栈帧的入栈操作。相应的,方法的返回则表示栈帧的出栈操作。
如果方法调用时,方法的参数和局部变量相对较多,那么栈帧中的局部变量表就会比较大,栈帧会膨胀以满足方法调用所需传递的信息。因此,单个方法调用所需的栈空间大小也会比较多。
bioittang
2020-07-23
打赏
举报
回复
直接搜应该有的吧
Java
虚拟机
内存模型
本文详细介绍了
Java
虚拟机
(JVM)的
内存模型
,包括程序计数器、
虚拟机
栈、本地方法栈、堆和方法区(在JDK1.8后由元空间替代)。每个部分都阐述了其功能和在
Java
程序运行中的作用,如栈帧、栈溢出、内存溢出、线程私有与共享内存的区别,以及如何使用jclasslib工具辅助理解JVM。
java
虚拟机
的
内存模型
本文介绍了
Java
虚拟机
(JVM)的
内存模型
,包括方法区、堆、
虚拟机
栈、程序计数器区域和本地方法区等关键部分,并探讨了对象的创建与访问方式。
java
虚拟机
内存模型
本文深入探讨
Java
虚拟机
(JVM)的
内存模型
,包括程序计数器、
虚拟机
栈、本地方法栈、方法区、堆等关键概念。同时,对对象的内存布局进行了详细解析。
面试官:
Java
虚拟机
是什么,
Java
虚拟机
的
内存模型
是什么样子的?
本文以轻松幽默的方式介绍了
Java
虚拟机
(JVM)的
内存模型
,包括程序计数器、
虚拟机
栈、本地方法栈、堆和方法区的功能及作用,并解释了它们如何帮助
Java
程序高效运行。
Java SE
62,622
社区成员
307,255
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章