内存分析
2015-11-11 10:10
155 查看
栈
存放:局部变量
堆
存放new出来的对象
方法区
存放:类的信息、static变量、常量池(字符串常量)等
例如
程序以main函数为入口,
1.首先读取到Student类,将类的信息如代码、static常量、常量池存放如方法区,如图所示
2.s1为局部变量,放入栈,s1是引用类型(类似于int、String),占用4个字节,栈比较小
3.new的方法放入堆,调用构造器,建的student对象是类的一个复制,将类的定义复制到堆,包括name :null,Id :0;Age:0,Gender:null;weight:0,并对其初始化赋值,属性越多,占的内存越多,
study()与sayhello()方法赋上地址,指向方法区
4.Student s1=new student();"="赋值 ,将堆中对象的地址值赋给s1;
4.s1.nam e="亚运"通过s1的地址找到name,通过name的地址找到常量池;
以此类推
操作对象就是操作地址
下图为此段代码的对应内存分析图
存放:局部变量
堆
存放new出来的对象
方法区
存放:类的信息、static变量、常量池(字符串常量)等
例如
程序以main函数为入口,
1.首先读取到Student类,将类的信息如代码、static常量、常量池存放如方法区,如图所示
2.s1为局部变量,放入栈,s1是引用类型(类似于int、String),占用4个字节,栈比较小
3.new的方法放入堆,调用构造器,建的student对象是类的一个复制,将类的定义复制到堆,包括name :null,Id :0;Age:0,Gender:null;weight:0,并对其初始化赋值,属性越多,占的内存越多,
study()与sayhello()方法赋上地址,指向方法区
4.Student s1=new student();"="赋值 ,将堆中对象的地址值赋给s1;
4.s1.nam e="亚运"通过s1的地址找到name,通过name的地址找到常量池;
以此类推
操作对象就是操作地址
下图为此段代码的对应内存分析图
相关文章推荐
- oracle 大字段clob检索
- windows下如何github ssh 公钥
- HDU 2819 ——Swap——————【最大匹配、利用linker数组、邻接表方式】
- BigPipe学习研究
- 基于HTML5树组件延迟加载技术实现
- swiper下loop模式点击事件无效的原因
- android应用名称设置的问题
- 用抓包软件来分析tcp 数据包
- 在Swift中使用JavaScript的方法和技巧
- Android -- ActivityLifeCycleCallbacks
- 思考
- php操作mongodb
- iOS UIimage和UI color转换
- sed的资料和一些实例
- weblogic软件安装(Linux系统)
- 利用DDMS 查看 分析线程阻塞
- 我的导出模板
- awk命令详解
- bzoj4011[HNOI2015]落忆枫音
- android Run模式也会出现"Waiting for debugger"的解决方法