Stack and Heap
来源:互联网 发布:海关数据米课 编辑:程序博客网 时间:2024/06/10 12:40
JVM 分配内存进入以下区域
1: Heap
2:Stack
3:Code
4:Static
jvm有效的管理分配到这几个内存区域。
Code section 代码区 包含这个 字节码文件 (byte code)
Stack section (栈区域) 包含 方法(methods) ,局部变量 (Local variables) 和 引用变量( reference variables)
Heap section (堆区域)包含 对象 (也许会包含引用变量(下面的例子中有提到))
Static section (静态区域) 包含 静态数据/ 方法 (Static 数据 和 方法 为 类的方法,隶属于类)
实例变量 和 局部变量 的区别:
实例变量 声明在一个类的内部,而不是在方法的内部,就是在方法的外部,且不能带静态 static 修饰符。
以下例子中:
其中 num 为实例变量, 如果 前面带有static 那就是 类变量 全局变量 隶属于 类。
class Student{ int num; // num is instance variable public void showData{}}
局部变量是声明在方法的内部,包含方法的参数,统称为 局部变量。
以下例子中 a 和 x都是局部变量。
public void sum(int a){ int x = int a + 3; // a , x are local variables }}
记住以下几点(Points to Remember:)
1:当一个方法被调用时, a frame 是被创建在 栈顶。
2:一旦方法完成执行,控制流返回正在调用的方法,stack 中 frame 被 清空(flushed)
3:局部变量是在栈中创建。
4:实例变量在堆中创建, 是对象的一部分,实例变量 依附于对象。
5:引用变量是在栈中创建。
思考: 如果一个对象的实例变量 引用了 另外一个对象 会怎样?
public static void main(String args[]){ A parent = new A(); //more code } class A{ B child = new B(); int e; //more code } class B{ int c; int d; //more code }
在这个例子中, 引用变量 B child 将在堆中创建,指向它对应 heap 堆中的对象,
下面的图显示了 这个引用关系:
child 为 引用变量 指向 堆中的 用B类创建的 child对象, 其中 parent在方法中 为局部变量,存放在栈中。
- Stack and Heap
- Stack and Heap
- Heap and Stack
- String stack and heap
- heap and stack 精华贴
- Heap and Stack
- stack and heap
- heap and stack
- heap and stack
- Stack and Heap
- heap and stack
- stack and heap
- Heap And Stack -- Part1
- Java stack and heap
- heap and stack
- Heap And Stack 堆 栈
- difference between stack and heap
- What is heap and stack?
- 差分法求数列后几项
- sams emacs 24 hour 读书笔记3
- CSS3学习笔记4-透明度
- 简述TVS是的命名和封装
- Sizeof与Strlen的区别与联系
- Stack and Heap
- R语言与数据的预处理
- startservice与bindservice混合使用问题
- Linux下GCC使用方法简介
- 程序员必须知道的几个国外IT网站
- 加强eclipse的使用技巧。可变参数。基本数据类型自动装箱和拆箱。枚举。反射。数组反射的应用。ArrayList和HashSet。JavaBean
- [C/C++]_[utf8字符串转换为unicode字符串]
- VS2010 MFC初学解惑
- 索引的Selectivity