【JVM】(一):Java内存模型

来源:互联网 发布:三明治板的刚度矩阵 编辑:程序博客网 时间:2024/05/22 07:57

回顾

在学习Java基础的时候,程序的一次执行过程:

程序运行时,被加载到了内存区域,操作系统找到程序代码中的main方法开始执行,在执行过程中从不同的内存区域中为对象或变量申请内存空间。

这里写图片描述

堆Heap:new ()出来的实例对象,数组
栈Stack:局部变量
数据区:静态变量、字符串常量
代码区:存放代码

简单对比

之前的堆——Java堆
之前的栈——Java虚拟机栈中的局部变量表
之前的数据区和代码区——方法区

此外还有

  • 本地方法栈
  • 程序计数器

这里我们讨论的是Java虚拟机运行时的内存区域,所以代码区不考虑。

深入学习

这里写图片描述

区域 是否线程共享 存放内容 程序计数器 私有 记录程序执行位置 Java虚拟机栈 私有 Java方法执行模型: 局部变量表(基本数据类型变量,对象引用),操作数栈,动态链接,方法出口 本地方法栈 私有 Native方法执行模型 Java堆 共享 对象实例,数组,GC主要管理的区域 方法区 共享 类信息,常量,静态变量,编译后的代码。其中字面量和符号引用放到运行时常量池

备注:

1.native方法:一个java代码调用非java代码的接口,该接口的实现不是Java语言。

2.运行时常量池支持运行时,把新的常量放到池中。
String.intern()是个native方法,如果字符串常量值已经包含一个等于此String对象的字符串,则返回;否则,将String对象的字符串加到常量池,并返回String对象的引用。

3.字面量、常量、变量的区别:

int a;//a变量const int b=10;//b为常量,10为字面量string str="hello world";//str为变量,hello world为也字面量

字面量是指由字母,数字等构成的字符串或者数值,它只能作为右值出现。

常量和变量都属于变量,只不过常量是赋过值后不能再改变的变量,而普通的变量可以再进行赋值操作。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果手机不小心按了丢失模式怎么办 苹果手机不小心调成耳机模式怎么办 不小心把图书馆的书弄坏了怎么办 不小心把图书馆书拿出来了怎么办 八个月宝宝吃母乳缺铁怎么办 大头笔写的字褪色了怎么办 小画板用记号笔画了擦不下来怎么办 新换的大灯和原大灯有色差怎么办? 微信信息写好没有发送两字怎么办 3d模型导进去 材质丢失怎么办 3d模型导入材质没了怎么办 淘宝上的电视尺寸与实际不符怎么办 医师面试题号忘了写怎么办 淘宝买东西东西被别人拿走了怎么办 9个月宝宝上肢支撑不好怎么办 宝宝快十一个月了留口水怎么办 两岁宝宝不会自己登着大小便怎么办 小新家的房子被炸了房贷怎么办 怀孕8个月感冒鼻窦炎头疼怎么办 买的全身镜下面的框子坏了怎么办 单位上司姐姐每天要接我上班怎么办 企业微信公众号中的文章边框怎么办 怎么办我在数学答题卡上画了分割线 游泳的时候泳裙飘起来怎么办 两岁宝宝误服了酵素梅怎么办 人被困在山洞里没有氧气怎么办? 一个人太爱你可你不爱他怎么办 牙齿还没掉又长了新牙齿怎么办 两岁宝宝牙齿发黑烂牙怎么办 怀孕八个月被小孩压到肚子了怎么办 在花场上班客人约我出去玩怎么办 小天才电话手表开不了机怎么办 黑色笔芯弄在白色衣服上怎么办 su文件打开是意外的格式怎么办 su卡的动一下就卡怎么办 犀牛vary渲染的太曝光了怎么办 脑子老是乱想幻想控制不住怎么办 猫抓了破了点皮怎么办 小孩子喜欢玩别人家的玩具怎么办 孩子把别人家的玩具玩坏了怎么办 小新和爸妈一起睡觉那他们怎么办