Java内存机制

在Java中有四块内存空间
分别是栈内存空间、堆内存空间、全局数据区、全局代码区
其中全局数据区存放static(静态)类型的属性, 全局代码区存放所有的方法定义.

使用最多的两块内存区域是栈和堆.
栈内存中存放的是在函数中定义的基本类型的变量和定义的引用变量, 当一段代码块定义一个变量时, Java就在栈中为这个变量分配内存空间, 当超过变量的作用域后, Java会自动释放掉为该变量分配的内存空间, 该内存空间可以立即被另做他用.

引用变量(简称 ‘引用’)实质上是数组或对象在堆内存中的首地址, 引用变量也属于变量, 所以超出作用域后也会被回收. 引用其实就是java中的指针.

堆内存中存放的是由new所创建的数组和对象, 堆内存的垃圾回收机制与栈内存不同, 堆的内存回收是由Java虚拟机的自动垃圾回收器来管理, 在堆中产生了一个对象或数组, 当没有引用变量指向的时候, 才会被变为垃圾. 不能再被使用, 但此时仍旧占据内存空间, 在随后一个不确定的时间被垃圾回收器释放掉.

在这里插入图片描述

Java本身提供垃圾收集机制(Garbage Collection,GC),会不定期施放不用的内存空间,只要对象不用了,就会等待GC释放空间.

一个栈内存的引用只能指向一个堆内存的对象,如果要想再指向其他的堆内存的对象,则必须先断开已有的指向才能分配新的指向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值