java内存管理
来源:互联网 发布:中草药软件 编辑:程序博客网 时间:2024/06/03 22:02
1、java内存分成三部分:栈区、堆区、方法区。
2、java数据在内存中存储过程:
a)基本数据类型(int, short, long, byte, float, double, boolean, char):先判断栈内是否有该变量的值(而非该变量名),将变量直接指向该地址,没有开辟新地址存储该值。
b)对象:对象的创建分成两步,声明与实例化。声明时先在栈内保持对象引用且为null;实例化在堆内开辟空间,保持对象具体内容,并将地址赋值给引用。
c)创建多个不同的对象实例:会在栈中创建不同的引用,无论它们的引用是否相同。
例如
//在栈中创建了两个对象引用,在堆中保存两个对象实例
Rectangle r1= new Rectangle(3,5);
Rectangle r2= new Rectangle(4,6);
//在栈中穿件了两个对象引用,它们的值相等,在堆中只有一个对象实例
Rectangle r1= new Rectangle(3,5);
Rectangle r2=r1;
d)包装类:和对象的创建过程一样。
e)String:String是一个特殊的包装类。有两种创建方式:1)和基础类型一样 String a=”a“;2)和包装类一样 String a = new String(”a“);
f) 数组创建:先在栈内保存数组引用,再到堆开辟空间存储具体数组
g)静态变量:只有一个实例
3、栈区保存局部变量(主要为基本数据类型以及对象的引用);堆区保存数组、对象以及该对象具体的成员变量;方法区保存静态变量、常量。
4、方法的调用实质是入栈出栈的过程,也就是局部变量创建与释放的过程。
5、equals比较的是值相等,==比较的是引用相等。
6、堆和栈的区别:堆主要存放对象、数组;生存期不需预先告知编译器,是动态分配的、速度慢、GC负责回收。
栈主要存放局部变量;数据大小和生存期确定、速度快、灵活性差。
- 【Java】Java内存管理
- java内存管理-堆栈内存
- java内存管理-内存回收
- JAVA内存管理
- java内存管理
- JAVA 内存管理
- JAVA 内存管理
- java得内存管理
- Java内存管理思想
- Java内存管理思想
- Java内存管理思想
- java内存管理
- Java内存管理
- Java内存管理概述
- Java内存管理
- Java内存管理
- Java内存管理
- Java内存管理
- poj 1422 最小路径覆盖
- HDU Clear All of Them I(状态压缩+DP+记忆搜索)
- 个人对多线程的总结
- Android单元测试jUnit
- 防止进程重新启动-keepalived源码解析
- java内存管理
- Hduoj3874 【离线+树状数组】
- 2014-11-8Android学习------Android抽屉效果的实现案例--------动画Animation学习篇
- 构建高性能Web站点(修订版)笔记
- JSP九大内置对象
- HDU 4786 Fibonacci Tree 并查集+生成树=kruskal
- H264 GOP 扫盲
- POJ 2074 Line of Sight 直线相交+线段覆盖
- JAVA父类子类调用流程简单展示