抓住几个要点吧即可,程序运行时主要分配数据的区域,1.寄存器(这是最快的存储区域,位于cpu内部,这个咱们先不管)
2.栈,用于存储基本数据类型以及对象还用数组的引用,(不同于c++可以再可以再栈中创建对象)
3.堆,用于存放所用的java对象
4.常量存储,用于存放静态数据
5.持久存储,变量会存活于程序之外,不受程序流程控制,常见德 例子就是流对象,你可以将对象写入磁盘,需要的
时候在将其取出即可
之后就是变量在内存的作用于域了,举个例子来说吧- {
- String s= new String("is String");
- }
复制代码 先是在堆中创建了一个String类的对象,之后再栈中有个变量s指向该对象,程序执行到大括号之后,引用s也就消失了,内存也就释放了,然而s指向的那个对象仍然占据着内存空间,没用一个引用指向他,也就变成了垃圾对象,之后垃圾回收器会在某个时间段对该对象进行回收。
记住一点即可,基础数据类型(4 类8种的数据类型,不包括他们对应的包装类对象),形参,局部变量存储于栈中,对象以及数组存储于堆内存,代码敲多了,量变引发质变
时间长了,你自然会懂,我刚学java的时候和你一样,我还有那些不完整的楼下要记得更贴啊 |