java学习笔记_内存分析
2016-10-19 17:52
204 查看
程序执行时内存一般被分为4部分
代码区(code segment):存放代码
数据区(data segment):静态变量和字符串常量
栈(stack): 存放局部变量
堆(heap):动态生成内存(new出来的东西)
代码如下:
内存分配如下:
说明如下:
栈内存存放局部变量,堆内存存放new出来的东西;
p为引用数据类型,是Person类的一个变量,Person p时,只在栈内存为p开辟一个空间,存放一个地址(比如地址为XXX ,不一定是物理地址),该地址用于指向对象new后堆内存为其分配的地址XXX。当new Person(1,25)时,堆内存才会为p的属性(id和age) 分配一个空间,空间的地址为XXX。并调用构造函数Person( )对属性值进行初始化,初始化为1和25(这个1和25是从栈内存中找到构造函数的变量_id和_age的值后再赋给p的变量id和age的);
调用构造函数Person时,会产生两个局部变量_id和_age。因为任何一个局部变量都会存放在栈内存中,所以栈内存中会为这两个局部变量分配空间,存放这两个变量的值1和25。
因为当方法调用完成之后,栈里面为其分配的所有空间会全部消失。所以当构造函数使用结束后,会收回其在栈内存中分配的_id和_age的空间,把空间“腾出来”给其他方法使用。但对象p会一直在栈内存中存在。
代码区(code segment):存放代码
数据区(data segment):静态变量和字符串常量
栈(stack): 存放局部变量
堆(heap):动态生成内存(new出来的东西)
代码如下:
public class Person{ int id; int age; Person(int _id,int _age){ id = _id; age = _age; } public static void main(String[] args){ Person p = new Person(1,25); } }
内存分配如下:
说明如下:
栈内存存放局部变量,堆内存存放new出来的东西;
p为引用数据类型,是Person类的一个变量,Person p时,只在栈内存为p开辟一个空间,存放一个地址(比如地址为XXX ,不一定是物理地址),该地址用于指向对象new后堆内存为其分配的地址XXX。当new Person(1,25)时,堆内存才会为p的属性(id和age) 分配一个空间,空间的地址为XXX。并调用构造函数Person( )对属性值进行初始化,初始化为1和25(这个1和25是从栈内存中找到构造函数的变量_id和_age的值后再赋给p的变量id和age的);
调用构造函数Person时,会产生两个局部变量_id和_age。因为任何一个局部变量都会存放在栈内存中,所以栈内存中会为这两个局部变量分配空间,存放这两个变量的值1和25。
因为当方法调用完成之后,栈里面为其分配的所有空间会全部消失。所以当构造函数使用结束后,会收回其在栈内存中分配的_id和_age的空间,把空间“腾出来”给其他方法使用。但对象p会一直在栈内存中存在。
相关文章推荐
- 黑马程序员--Java基础学习笔记之抽象类和接口、内存结构分析、Java APIs
- Java学习笔记-JVM内存分析
- java学习笔记-java jvm内存结构分析
- JAVA学习笔记之继承和父类子类实例变量的初始化内存分析图
- 学习笔记-java内存分析
- Java学习笔记-类与对象(对象内存分析)
- Java 学习笔记 (13) - 基本内存分析 和 垃圾回收机制
- 2015.09.01 Java 学习笔记—内存分析精华
- JAVA学习笔记--4.多线程编程 part1.背景知识和内存模型
- [学习笔记].NET中的内存分析
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第30讲_类和对象细节_创建对象的几种方式_js对象内存分析_学习笔记_源代码图解_PPT文档整理
- java_croe 学习笔记之新IO---java.nio 之内存映射文件
- Java学习笔记47:Java 内存区域
- java 并发编程学习笔记之volatile意外问题的正确分析解答
- 《Thinking in Java 》学习笔记 --- Java内存分配,对象存放到什么地方?怎么放?
- 黑马java学习笔记_ArrayList 和HashSet的比较及HashCode分析和Java中内存泄漏的探讨
- 马士兵java视频学习笔记第三章:内存解析
- JVM内存大小设置[JAVA学习笔记]
- JVM学习笔记(1、 基本结构;2、Java代码编译和执行的整个过程3、内存管理和垃圾回收 4、 内存调优 )
- nginx 源码学习笔记(七)——内存分配相关源码分析