码迷,mamicode.com
首页 > 其他好文 > 详细

内存模型以及分区,需要详细到每个区放什么

时间:2020-02-07 19:08:29      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:undefined   ati   java   指令   用途   内存模型   接口   程序   类信息   

内存模型以及分区,需要详细到每个区放什么

整个计算机的内存中的一部分划给了Java程序管理,在执行Java程序的时候,虚拟机会将这部分内存划分为不同区域,都有各自的用途以及生命周期。

分区:程序计数器、虚拟机栈、本地方法栈、堆、方法区(包含运行时常量池)

程序计数器(PCR)它可以看作是当前线程所执行的字节码的行号指示器。字节码工作器是通过改变这个计数器的值来获取下一条需要执行的字节码,线程中的很多基础功能都通过这个步骤来实现。
程序计数器中放置的是当前正在执行的虚拟机字节码指令的地址,如果正在执行的是Native方法,那么计数器中的值则为空(Undefined)。

虚拟机栈,是描述Java方法执行的内存模型。虚拟机栈中存放的是栈帧,栈帧中存储有局部变量表、操作数、方法接口等信息。

本地方法栈和虚拟机栈类似,不同点在于虚拟机栈是为字节码服务的,本地方法栈是为Native方法服务的。并且虚拟机规范对本地方法栈没有强制规定,可以按需求自由实现。

堆是存放对象实例的地方,它是Java程序管理的内存中最大的一块,内存回收是这一块中经常发生的事情,为了方便回收与分配,这一块内存通常会被划分成不同区域。

方法区是存放被虚拟机加载的类信息、常量、静态变量等数据。其中常量被放在一个叫运行时常量池的地方。这里存放的是各种字面量和符号引用。

内存模型以及分区,需要详细到每个区放什么

标签:undefined   ati   java   指令   用途   内存模型   接口   程序   类信息   

原文地址:https://www.cnblogs.com/peekapoo/p/12273951.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!