Java内存分配
来源:互联网 发布:java面试吹牛 编辑:程序博客网 时间:2024/06/17 23:46
Java中的内存分配
Java程序在运行的时候,需要在内存中分配空间。为了提高运算效率,对空间进行了区域划分,每一片区域都有特定的数据处理方式和内存管理方式。Java内存空间分为五个区域:
栈(存储局部变量)
局部变量:在方法定义中或者方法声明上的变量。
栈内存中的变量在用完(脱离作用域)后立即消失。
堆(存储new出来的东西)
堆内存的特点:
1、每一个new出来的东西都有地址值;
2、每个变量都有默认值
byte、short、int、long默认值为0
float、double默认值为0.0
char默认值为’\u0000’
boolean默认值为false
引用类型默认值为null
3、变量使用完毕后就变成垃圾,不会立即被回收,会在垃圾回收器空闲的时候被会回收。栈内存中的变量在用完(脱离作用域)后立即消失。
方法区
本地方法区(系统相关)
寄存器(CPU使用)
对象的内存图
1、将相关的.class文件加载到方法区中
2、在栈内存中加载main()
3、生成对象Phone phone = new Phone()
4、对phone的成员变量赋值
5、调用方法时先根据方法标记在栈内存中加载方法,调用完毕后立刻消失。
6、main()在栈内存中消失
成员变量和局部变量的区别:
1、类中的位置不同
成员变量:在类中、方法外
局部变量:在方法定义中或者方法声明上
2、在内存中的位置不同
成员变量:堆内存中
局部变量:栈内存中
3、生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法调用完毕而消失
4、初始化值不同
成员变量:有默认的初始值
局部变量:没有默认初始化值,必须定义、赋值才能使用
注意:
局部变量可以和成员变量的名称一样,方法在调用变量时,采用的是就近原则
- C++ 内存分配 vs java内存分配
- JAVA中的内存分配
- java内存分配初探
- JAVA中的内存分配
- java内存分配
- 初探java内存分配
- java内存分配
- java内存分配研究
- java内存分配初探
- java中的内存分配
- java中内存分配
- java的内存分配
- Java 内存分配
- java内存分配图
- Java内存分配
- java中的内存分配
- java 内存分配
- Java中的内存分配
- CodeVS4730 特殊等式-1@2@3@...@(N-1)=N
- hadoop 学习笔记005(shell命令简单了解)
- GPU的工作原理
- pom配置文件---ssh(学习笔记)
- 单点登录
- Java内存分配
- 网络编程- ping程序简单实现
- Spring概述
- Shuffling Machine (20)
- Luogu 1962(矩阵快速幂)
- 在Mysql中显示所有用户的操作教程(Linux环境下)
- 训练日记--2017.10.19
- php中注册自动加载方法
- Eclipse安装后初步使用