06-内存相关

1、Java程序一运行,都必须在内存中开辟空间,因为CPU处理内存中数据速度较快。JVM启动也需要进行空间的开辟

2、每一个Java程序在运行时,一共开辟五片区域来分配内存(每一片内存空间中数据的处理方式不同,要单独进行划分和管理)。内存划分:寄存器(CPU在处理)、本地方法区native修饰的方法,方法内容看不到,会转成调用底层C的代码,调用系统内容。与所在系统相关,JVM分好多版本(windows、linux、ios等),在不同版本下调用不同操作系统中的内容)、方法区栈内存堆内存

3、内存在存储数据时都通过地址来体现,所以任何数据在内存中都有地址

4、:栈中存储的都是局部变量。栈内存的更新速度很快,因为变量的生命周期都比较短

    局部变量:定义在方法中的变量

    所以先有函数(进栈),再有局部变量。所属变量的作用域一旦结束,该变量就自动释放

5、:堆中存储的是实体(数组、对象)。凡是new建立的都在堆中,堆不会随时释放

    实体用于封装多个数据

    所以堆中存实体,实体存数据

    堆内存中的变量都会有默认初始化

    (1)整数byte、short、int、long --> 0

    (2)小数float、double --> 0.0

    (3)boolean --> false

    (4)char --> '\u0000'    相当于空格

6、堆内存的特点:

(1)每一个实体都有一个首地址值(在内存中开辟空间),实体被使用往往通过地址指向

(2)堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同(JVM自动完成),否则堆中变量无法使用

(3)垃圾回收机制(与C++相比,内存管理的不同)

7、栈内存中的变量/方法会被释放/弹栈,而堆内存中的实体会变成垃圾等待被回收

    多个引用变量可以同时指向一个实体,实体没有任何引用变量指向时才变成垃圾


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值