内存简单介绍

本文详细介绍了Java内存的几个主要区域,包括栈内存、堆内存、方法区等,以及对象的生命周期。栈内存主要用于存储变量,而堆内存用于存储对象并自动赋予初始值。在创建对象时,栈中保存对象的引用,堆中分配空间。对象在使用完毕后,堆内存不会立即回收,而是等待垃圾回收机制。此外,还阐述了变量的默认初始化值和数组的内存分配方式。
摘要由CSDN通过智能技术生成

一、内存分类

栈内存、堆内存、方法区、本地方法栈(涉及与其他语言的交互)、寄存器

二、栈内存

可以用于存储变量,栈内存对存入其中的变量不会自动赋值,变量在使用完成之后会立即移

三、堆内存

用于存储对象的,堆内存对于存入其中的元素会自动的赋予初始值
byte/short/int-0,long-0L;float-0.0f,double-0.0,char-‘\u0000’(注意单引号),boolean-false, 引用数据类型的默认值都是null
对象使用完成之后不会立即移出堆内存,而是在不定的某个时刻被回收
在这里插入图片描述

声明的时候,是在栈里面开辟空间存放这个变量。 碰见new,就立即在堆中开辟空间,该内存有个地址,将地址放在栈里面。此时栈中的变量的值就是堆中内存的地址。根据栈中存放的地址找到堆中开辟的空间。如果是数组,将该空间平均分成若干份(数组定义的时候确定的大小是几就平均分成几份。)

在这里插入图片描述

内存的初始化过程在程序的初始化之前。在内存初始化的时候,并不知道具体值是多少,所以此时都是默认值。内存初始化完成之后才会赋值具体的值。

在这里插入图片描述

打印数组的时候(在代码中写的是打印数组定义的时候的数组名System.out.println(arr)),是从栈中取的变量的值,所以取出的是个地址(形式如下图所示)。当给定下标的时候,就可以顺着地址找到对应的值。
![在这里插入图片描述](https://img-blog.csdnimg.cn/71a5fb4bed304b74a5e91ea4585c98d2.png)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值