社区
Java SE
帖子详情
Java虚拟机内存模型
临世驻年
2020-07-23 10:09:20
解释一下Java虚拟机内存模型
...全文
756
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
打赏
举报
回复
直接搜应该有的吧
30+个视频+深入理解
Java
虚拟机
(jvm优化+
内存模型
+
虚拟机
原理)
30+个视频+深入理解
Java
虚拟机
(jvm优化+
内存模型
+
虚拟机
原理)
JAVA
虚拟机
精讲
《
Java
虚拟机
精讲》以极其精练的语句诠释了HotSpot VM 的方方面面,比如:字节码的编译原理、字节码的内部组成结构、通过源码的方式剖析HotSpot VM 的启动过程和初始化过程、
Java
虚拟机
的运行时内存、垃圾收集算法...
深入理解JVM
虚拟机
(JVM
内存模型
、性能监控、
虚拟机
原理)一期
深入理解JVM
虚拟机
(JVM
内存模型
、性能监控、
虚拟机
原理)一期 可惜
Java
虚拟机
并发编程
它系统深入地讲解在jvm平台上如何利用jdk同步模型、软件事务
内存模型
和基于角色的并发模型更好地进行并发编程。全书以示例驱动,通俗易懂,包含大量编程技巧、注意事项和最佳实践。要重点强调的是,本书并不仅仅只...
java
虚拟机
内存模型
java
虚拟机
内存模型
是
java
程序运行的基础,充分的了解
虚拟机
内存模型
可以对jvm进行更深入的调优,可以使相同的配置资源,运行效率最大化。jvm
虚拟机
将内存数据分为长须计数器、
虚拟机
栈、本地方法栈、
java
堆和方法区...
Java SE
62,615
社区成员
307,318
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章