黑马程序员技术交流社区
标题:
关于程序运行时在内存中的分析过程
[打印本页]
作者:
小路飞
时间:
2013-3-12 07:38
标题:
关于程序运行时在内存中的分析过程
本帖最后由 侯国奇 于 2013-3-13 00:11 编辑
看毕老师讲的时候是挺明白的,自己分析就有些混乱了,该怎么办才好?对于后期做项目有没有大的影响?请指教!
声明一下,我知道内存的划分,只是在对象的初始化过程,对象调用成员过程,内部类等在内存中的运行有些混乱了!
作者:
于腾飛
时间:
2013-3-12 08:07
我想你应该刚开始看到的 是毕老师讲的 栈内存和堆内存, 记住老师讲的 ,栈内存主要存的是局部变量, 堆内存是存储的是数组和对象,通过NEW建立的实力....
class Array
{
public static void main(String[] args)
int[] arr=new int[4];//这里的new int[4]就是存在堆里的;
for(int x=o;x<4;x++)//for的循环定义的变量x就存在栈里;
{ System.out.println(arr[x]);
}
}
基础是为后来铺垫的,如果哪里没明白,就要反复弄哪里,否则会对以后的编程思想造成困扰的!加油
作者:
张文星
时间:
2013-3-12 09:10
恩,同样关注中~~~
作者:
沈文杰
时间:
2013-3-12 09:42
多看几遍毕老师讲的内存部分。
Person示意图.JPG
(104.77 KB, 下载次数: 21)
下载附件
2013-3-12 09:42 上传
作者:
vmvm555
时间:
2013-3-12 10:43
抓住几个要点吧即可,程序运行时主要分配数据的区域,1.寄存器(这是最快的存储区域,位于cpu内部,这个咱们先不管)
2.栈,用于存储基本数据类型以及对象还用数组的引用,(不同于c++可以再可以再栈中创建对象)
3.堆,用于存放所用的java对象
4.常量存储,用于存放静态数据
5.持久存储,变量会存活于程序之外,不受程序流程控制,常见德 例子就是流对象,你可以将对象写入磁盘,需要的
时候在将其取出即可
之后就是变量在内存的作用于域了,举个例子来说吧
{
String s= new String("is String");
}
复制代码
先是在堆中创建了一个String类的对象,之后再栈中有个变量s指向该对象,程序执行到大括号之后,引用s也就消失了,内存也就释放了,然而s指向的那个对象仍然占据着内存空间,没用一个引用指向他,也就变成了垃圾对象,之后垃圾回收器会在某个时间段对该对象进行回收。
记住一点即可,基础数据类型(4 类8种的数据类型,不包括他们对应的包装类对象),形参,局部变量存储于栈中,对象以及数组存储于堆内存,代码敲多了,量变引发质变
时间长了,你自然会懂,我刚学java的时候和你一样,我还有那些不完整的楼下要记得更贴啊
作者:
HM周磊
时间:
2013-3-12 23:23
内存中的方法区里存了函数中的所有方法吗,包括构造函数??
求大神解答??
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2