堆栈 jvm 太难懂?买房子总能理解了吧

jvm

java零基础入门-面向对象篇(一) 基础类型和引用类型

友情提示:本章开始可能会有部分较深入的内容,不说又不行,说了又很难解释清楚,因为里面的技术细节实在太多太复杂,所以我会屏蔽部分技术细节,只展示当前需要了解的基础知识,避免出现讲了半天还是没人懂的情况。随着我们的知识增长,后面会逐步的将细节补充完整。

学习编程,一定要把思路放开,不能太局限,多多进行思维能力的锻炼才能提高自己的内功。比如我们很常见的买房啊,哪里修商场啊,其实跟我们的内存结构是很类似的。他们都涉及到一个资源规划的问题,来吧,一起来锻炼下思维能力吧。

最近全国除了最火的抢人大战,其实前段时间还有一个东西很火,那就是城市规划。比如我们的首都北京,选择了雄安进行首都功能疏解,其实很多城市都有类似的规划,比如天津滨海新区,深圳前海新区等等。政府设立了一个即将开发的新区后,会干嘛?招商引资,首先是大的企业进来修路盖高楼大厦,然后修住宅,再卖给老百姓。我们来看看具体过程。

首先,政府画了一个圈,“走过路过不要错过哈,新鲜出炉的地块,各种优惠政策,减税减税再减税,快来看看啊~”,然后一堆大企业蜂拥而上,“给我留一块~”,“我也要~”。然后各种大企业开始修办公楼啊,房地产开发商开始修海景房啊,然后轮到地产开发商要喝了,“走过路过不要错过啊,海景房值得拥有,机不可失,抢到了幸福生活,没抢到继续干活~”。然后轮到抢房大军蜂拥而上了。


给我房!!!

再来看看电脑内存,其实我们的电脑就是政府部门,每一次一开机,就开始要喝,“内存开始大派送啦,需要的快来领啊”,然后各种开机启动的应用程序开始抢内存,什么聊天的啊,杀毒的啊,浏览器啊,当然还有系统自带的功能,统统需要内存。当然,内存不是一开机就分完了的,还有很多是我们启动了新的应用程序才会划分内存给你,比如我们的java。


应用程序和系统程序占用内存

电脑开机进行的内存免费大派送跟我们的政府规划很像,在座的各位都是大佬,内存要多少有多少。然后我们打开java的时候,java也成功的分到了一块内存空间。java这个房地产商跟别的有点区别,他很牛,拿的地很大,他要自己规划自己的地,也就是说它不仅仅要做房地产,他还要修商场,建公园,这个就厉害了~


java虚拟机

看见没有,系统给了一块内存java ,然后他在自己的一亩三分地上,开始干自己的规划了,这是个很高级的房产开发商。java有个名词叫java虚拟机(JVM),你就可以理解为他是一个虚拟的系统,他干了很多和系统类似的活,系统把内存交给java以后,就由 jvm 来负责规划内存。就像我们上面说的,政府部门划了地给开发商,java自己也划地分给他下面的小弟。那么java里面的小弟又是啥?继续往下看

首先我们看看普通人眼里的内存,他就是一块绿色的板子,上面有很多电路,下面有一条金光闪闪的东西,好了,理解完了。

普通人看内存

再来看看硬件工程师眼里的内存,他就是各种电路啊,电容啊,门啊之类的东西,其实我也不是很懂,大概是这样。

硬件工程师看内存

接下来看软件工程师眼里的内存,这个图是指分给java的内存,也就是jvm管理的内存。我们只看java这个开发商,自己已经分到的内存,其他软件,系统占用的内存我们不去管他。我们看到 jvm 划分的内存大概有以下这么几个区域:本地方法栈虚拟机栈程序计数器方法区,这些就是 java 自己的小弟了。

jvm内存

我们看看这些颜色是咋回事,和上面的规划图颜色说明差不多,红色的是 ,可以理解成商业用地,绿色的是方法区,可以理解成公园,这两个区域的特点是,他们是公共用地,不管哪个小区的居民,都可以来压压马路,看看风景。再看上面的,本地方法栈程序计数器是灰色,你可以理解为市政设施,每个片区都有警察局,有困难找警察叔叔,我们姑且不去管他,知道就行了。主要看看 虚拟机栈,这个下面简称为,这个很重要。我们可以理解成居民小区,每个人只能出入自己的小区,去别人小区可不行,保安不让进。

所以总结一下,堆和方法区是公共的,每个小区的居民都可以去玩,而栈是私有的,不能随便串门的。这个理解到这里就行了。接下来我们讲讲最重要的 ,方法区就是个大草地,暂时不用管他。

基础类型 和 引用类型

我们首先明确一个观念,我们的数据都是存在内存里的,但是不同的数据,在内存中存放的区域是不同的。有的数据存放在栈,有的数据存放在堆。具体谁放在哪,我们首先要明确数据的类型。

基础类型(又叫值类型):我前面讲的都是基础类型,byte,short,int,long,float,double,boolean,char,基础类型全部存在里面。

引用类型:数组,类,接口,引用类型变量存在,对象存在,通过引用确定关系。

基础类型比较好理解,创建的时候往栈里面一丢,搞定,打完收工。而引用类型就比较复杂了,引用类型的变量就是引用,啥叫引用?来吧,话不多,懵的时候就上图

内存地址

好吧,肯定有同学又要问,内存地址又是个啥?


内存地址

地址就是找人找东西时候用的,内存地址就是让内存划分的空间有个标记,我通过这个标记可以找到内存。所以引用类型里面存的不是你定义给他的值,而是存的内存地址。那我定义的数组啊,数组跑哪去了?它在堆里面,而这个栈里面存的地址就是堆里面放的那个数组的地址。又懵了?图图图~

地址

我们将红色箭头干的事,叫做:引用变量指向内存。堆里面的数据,只有当有引用变量指向它的时候,才能存在,如果没人指向堆里面的数据了,就会有一位亲切的清洁工阿姨把他当垃圾处理掉。所以栈里面的变量,红色箭头,堆里面的数据这三个东西是一体的,他们不能分开。他们在一起,才是定义了一个完整的引用类型。

其实这一段对于初学者来说是有难度的,概念比较多,步骤繁琐,图也都是平面图,有没有更加通俗易懂的方式来解释这个问题呢,来吧,本教程独家三维图双手奉上。

栈是一种数据结构,他的特点就是先进后出,后进先出。只有栈顶可以操作,栈底是固定的,插入操作又叫入栈,删除叫出栈。理解这么多就可以了。


栈结构


入栈


出栈


相对于栈的有序,堆是无序的,可以理解成随机划分一块空间来储存对象。

堆是无序的

我们用三维图再来看看刚才的例子

首先是基础类型

定义变量
入栈

再来看引用类型

定义变量
开辟空间,建立引用


本篇文章为接下来的数组,类打基础,堆和栈的理解对我们更好的学面向对象很有帮助,请好好理解,多多参悟。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,209评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,536评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,227评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,124评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,137评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,295评论 1 280
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,754评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,409评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,583评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,445评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,495评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,189评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,757评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,828评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,058评论 1 257
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,587评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,163评论 2 341

推荐阅读更多精彩内容