Android内存机制—堆和栈
来源:互联网 发布:摇奖转盘软件 编辑:程序博客网 时间:2024/05/18 04:09
1.dalvik的Heap(堆)和Stack(栈)
2.对象实例数据
实际上是保存对象实例的属性,属性的类型和对象本身的类型标记等,但是不保存实例的方法。实例的方法是属于数据指令,是保存在Stack里面,也就是上面表格里面的类方法。
对象实例在Heap中分配好以后,会在stack中保存一个4字节的Heap内存地址,用来查找对象的实例。因为在Stack里面会用到Heap的实例,特别是调用实例的时候需要传入一个this指针。
3、方法内部变量
类方法的内部变量分为两种情况:简单类型保存在Stack中;对象类型在Stack中保存地址,在Heap 中保存值。
4、非静态方法和静态方法
非静态方法有一个隐含的传入参数,这个参数是dalvik虚拟机传进去的,这个隐含参数就是对象实例在Stack中的地址指针。因此非静态方法(在Stack中的指令代码)总是可以找到自己的专用数据(在Heap 中的对象属性值)。当然非静态方法也必须获得该隐含参数,因此非静态方法在调用前,必须先new一个对象实例,获得Stack中的地址指针,否则dalvik虚拟机将无法将隐含参数传给非静态方法。
静态方法没有隐含参数,因此也不需要new对象,只要class文件被ClassLoader load进入JVM的Stack,该静态方法即可被调用。所以我们可以直接使用类名调用类的方法。当然此时静态方法是存取不到Heap 中的对象属性的。
5、静态属性和动态属性
静态属性是保存在Stack中的,而不同于动态属性保存在Heap 中。正因为都是在Stack中,而Stack中指令和数据都是定长的,因此很容易算出偏移量,所以类方法(静态和非静态)都可以访问到类的静态属性。也正因为静态属性被保存在Stack中,所以具有了全局属性。
- Android内存机制—堆和栈
- Android内存机制分析——堆和栈
- Android内存机制分析——堆和栈
- 【Android内存机制分析】了解Android堆和栈
- 【Android内存机制分析】了解Android堆和栈
- Android内存机制分析上篇:了解Android堆和栈
- Android内存机制分析上篇:了解Android堆和栈
- Android内存机制分析上篇:了解Android堆和栈
- Android内存机制分析上篇:了解Android堆和栈
- Android内存机制分析上篇:了解Android堆和栈
- Android内存机制分析上篇:了解Android堆和栈
- Android内存机制分析上篇:了解Android堆和栈
- Android内存机制分析上篇:了解Android堆和栈 Android内存机制分析下篇:分析APP内存使用情况
- java内存机制_堆和栈
- java 内存机制(堆和栈)
- java内存机制_堆和栈
- java内存机制_堆和栈
- java内存机制_堆和栈
- Ehcache是现在最流行的纯Java开源缓存框架
- 括号配对问题---栈
- cmake find_package
- 重新开始
- 字符编码学习小记一
- Android内存机制—堆和栈
- C++——区间DP模板——压缩
- python web程序入门Django项目
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- 用go语言做一个简单的登录,大家不妨来看一下
- AspectJ切入点语法详解
- 反射
- 你所不知道的 HSTS
- Codeforces 676D Theseus and labyrinth(最短路)