Java 内存模型

Java 内存主要分为以下几个区域:

1. 虚拟机栈:

线程私有,由一个个栈帧组成,每个栈帧包含以下数据结构
a. 本地变量表 b. 操作数栈 c. 动态链接 d. 返回地址
本地变量表和操作数栈配合使用,支持方法调用。局部变量表分为一个个solt,Java解释器会根据指令对数据进行压栈,然后出栈,存入局部变量表或操作(计算),然后再入栈,再出栈等过程。
会出现两种内存溢出的情况:1) 递归调用 java.lang.StackOverflowError;2) 太多的线程造成无法分配栈空间 OOM。

2. 堆:

存储新建的对象

3. 元数据区:

存放Class,常量,静态变量

4. 本地方法栈:

用于支持本地方法调用

5. 程序计数器:

线程私有,记录当前方法执行的行号,用于在线程被重新唤醒时获取上次执行的位置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容