堆和栈上的变量生存
哈哈,没想到我居然开始写博客了,万事开头难,我就今天小小开个头。作为计算机零基础,才看了一个月java的小白,今天我要说说我学到的堆和栈。
heap和stack是内存中的两块地,其上种植和生存着各种变量、对象。
heap土地肥沃,阳光充沛,块头较大的对象就在这里安家。每当上帝new一个对象时,heap总是会开辟出一块地接收这位新的移民。
对象是一个家族,家族里有一种成员叫做成员变量,它也随着对象住在heap里。另一种呢,是可能出现的引用变量,它作为一种变量,却拥有和别的对象通话的能力,所以对象族长也把它安排过来和自己住。
stack的土地不像heap那样平原般广袤千里,它类似一种梯田,每当要开辟土地给新调用的方法时,总是从下到上。最上面方法完成功能了,深藏功与名,就会消失掉,带着它生的宝宝——局部变量一起离开。
啊,你要问heap上面对象要活多长?那就要看这个对象在外界还有没有心心念念牵挂着它的人了,就是引用这个对象的引用变量啦。如果没有人牵挂它了,GC——一个管理员,就会来请它离开这片土地。对象也会觉得活着没意思,黯然消失。
好啦,以上是我对heap和stack的理解啦!