Java内存简单分析

2014-11-24 02:08:48 · 作者: · 浏览: 0

当前,进入IT行业的人是越来越多,身边有不少同学也都对它怀有浓厚兴趣,大家也都认为,从事这个行业还是挺有“钱途”的,是一条通往光明的道路,但是我觉得,要想学好一门计算机语言,我们就要对它的运行机制和和相关内存变化做一个了解,现在,我就想在这里说说Java的内存机制。

简介:

在Java中,内存的管理分为以下几个部分:

\

Heap:堆区域,存放对象实例,凡是New出来的东西都存放在此。

Stack:栈区域,存放基本数据类型、常量、局部变量、对象的引用地址

Data Segment:数据段,存放静态变量和字符串常量< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ICAgIENvZGUgU2VnbWVudKO6tPrC67bOo6y05rfFtPrC6zwvcD4KPHA+ICAgINK7uPazzNDytcTWtNDQo6zPyNKqtNOzzNDytcS05rfFtdi809TYtb3E2rTmx/ijrMi7uvPV0rW9xNq05sf41tC1xG1haW63vbeo1rTQ0KOs1NrV4rj21rTQ0Ln9s8zW0KOsxNq05r7Nu+G21MbkvfjQ0LncwO2hozwvcD4KPHA+ICAgICAgICAgICAgPGltZyBzcmM9"https://www.cppentry.com/upload_files/article/76/1_dzchz__.jpg" alt="\">

Heap VS Stack:

\

内存分析实例:

现在通过一个实例来分析下在程序的执行过程中其内存是怎么对其管理的。 实例: \ 分析: 第一:寻找main主程序,执行Cat.sid=100;此时在程序中可以看到sid属于静态变量,所以将sid存放在Data Segment中。 \ 第二:执行Cat mimi =new Cat("mimi");此时先声明一个对象mimi,存放在Heap中,又因为new Cat("mimi")中的“mimi”是一个字符串常量,存放在Data Segment中。这个对象存在两个私有属性,id和name。 \ 第三:执行构造方法Cat(String name)中的this.name=name;为Cat(String name)中的name变量分配空间,存放在Stack中。Stack中的name指向Data Segment中的mimi。而this.name=name中的this指的是这个对象的name,即指的是Heap中的name。 \ 第四:构造方法Cat(String name)中的this.name=name;完成后,垃圾收集器自动回收不使用数据 \ 第五:执行构造方法Cat(String name)中的id=sid++;将sid的100分配给id,然后sid自身再加1。 \ 第六:执行mimi.info();打印出  莰kyJava跟C++差不多,大同小异,虽然现在还没有把视频看完,但还是希望自己能学的比较顺利。