代码在内存中的对应

来源:互联网 发布:linux spark 编辑:程序博客网 时间:2024/05/16 01:33

         看J2SE的视频,老师分析在代码在内存中的分布,而且一直说只要掌握了这些所有的语言都是一样的,所以我们就一起来看看我们经常敲的一些代码对应到内存中是怎样的。

         首先我们编写的程序是放在硬盘中的,当我们启动它是程序会被加载到内存中去,在操作系统中存在对内从的管理,大概的分为4块,分别为code、data、stack、heap,每个区块的内存有自己的特点,分别用来存放不同的内容。

         在code区存放代码例如代码中的方法就是存放在这里的,data区存放的时静态变量和字符串常量,在stack区存放的是局部变量、在heap区存放的时我们New出来的对象。

 

        code区比较好理解就是存的程序代码,包括方法都是存在code区的。

        data区存放两种,其中的静态成员变量是程序在初始化的时候就分配的的,程序的初始化就是在程序运行前将程序运行必须的资源加载到内存中

        stack区存放的是局部变量,局部变量就是在具体的方法内声明的变量,包括方法的参数也是局部变量。只要是局部变量不论是什么类型都存放在stack中,当方法执行完毕局部变量占用空间就被释放

        heap区存放的是引用类型的数据,数据的分类如下:

其中在类内部方法外部声明的是类的成员变量,它也是和对象一起存放在heap中的以便重复利用,heap中的对象不会随着方法的结束而销毁,因为即使方法结束,这个对象还有可能被其他的引用变量所引用,所以不会被销毁(java垃圾回收机制,学习为什么被引用的不会被销毁)。

下面通过一个实例来一步步具体的看一下

Cat是一个类,包括了自己的成员变量、构造函数,方法等。在main方法中使用是内存的变化如下:

1、  第一句:Cat.sid=100

——因为sid是静态成员变量在程序初始化时就存在,所以可以直接给在data中的sid赋值为100;

 

2、  第二句:Catmimi=new Cat(“mimi”)

       ①  Cat mimi 因为实在main方法内定义的是局部变量,所以会在stack中占用一块空间名字叫做“mimi”类型为Cat,

       ②  new Cat(“mimi”) 这时调用Cat的构造方法,首先在heap中占用一块空间,

       ③  stack中的mimi通过引用可找到这块heap中的空间,

       ④  构造方法的实参为”mimi”,由于是String类型的所以会在data区占用一块控件

       ⑤  那么在调用构造方法是形参为“String name”,所以会在stack中有一块空间名字叫做name类型为String,

       ⑥  将实参赋给形参

       ⑦  然后执行this.name=name这时stack中的name指向data中的字符串“mimi”,id=sid++,其中id就为100,sid变为101

      ⑧  在构造方法执行完毕之后,其中的变量释放

 小结

           基本类型的数据值占用一块内存,引用的占用两块,如其中的id和sid都是int类型的就只占用一块,而name是string类型的就占用两块,一个存放引用,一个存放值。

           我们所学的语言虽然形式多变,但是本质在计算机内存中的分配都是这样子的,所以掌握这些和有助于对语言和代码的理解!

 

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 数学计算总出错怎么办 16岁不认字怎么办 数学细节丢分怎么办 感觉自己老了怎么办 小学拼音不过关怎么办 小学面试不过关怎么办 小学阅读不过关怎么办 孩子计算老出错怎么办 工作中总是马虎怎么办 孩子总是计算错误怎么办 做设计老是犯错怎么办 小学生阅读总出错怎么办 写作文没思路怎么办 孩子不爱写作文怎么办 写作文没有素材怎么办 写作文没有灵感怎么办 做事工作马虎粗心大意怎么办 小孩作业马虎粗心大意怎么办 孩子写字一直错怎么办 孩子写字老错怎么办 写错字涂黑了怎么办 写错字不能涂改怎么办 孩子爱写错别字怎么办 孩子读题马虎怎么办 孩子知错不该怎么办 小孩胆小反应慢怎么办 孩孑经常流鼻血怎么办 中考考号写错了怎么办 头后仰就头晕怎么办 感觉自己要晕倒怎么办 孩子不愿动手写字怎么办 老年人恶心想吐怎么办 小学生老写错别字怎么办 突然头晕站不稳 怎么办 早上起床突然天旋地转怎么办 躺着突然感觉天旋地转怎么办 眩晕症发作时怎么办 低血糖恶心想吐怎么办 更年期头晕头胀怎么办 年轻人头晕头胀怎么办 教案:《眯眼了怎么办》