Java 堆栈内存分配

本文详细介绍了Java程序中的堆栈内存分配。Java对象在堆内存中创建,由垃圾收集器管理,而栈内存则用于执行线程,遵循LIFO原则。堆内存全局可访问,栈内存线程私有。程序执行过程中,栈内存为方法创建块存储局部变量,堆内存存储对象。堆内存管理复杂,可能出现OutOfMemoryError,栈内存过深会抛StackOverflowError。
摘要由CSDN通过智能技术生成

很多人在Java的书籍中看到过很多关于堆和栈内存的教程以及参考说明, 但是很难解释什么是程序的堆内存以及栈内存

一: Java 堆内存空间

Java程序运行时使用java Heap 内存为对象以及JRE类分配内存, 不论我们在何时创建何种类型的对象, 他总是在堆内存中创建的

Java 垃圾收集器运行在堆内容空间, 释放那些没有任何引用的对象所使用的内存。 在堆内存空间创建的任何对象都具有全局访问权限, 并且可以从程序的任何位置引用

二: Java 栈内存空间

Java 栈内存空间用于执行线程, 栈内存始终遵循LIFO(Last-in-first-out) 顺序, 每当一个方法被执行, 会在栈内存中创建一个新的block 用于保存在函数中定义的基本数据类型变量以及对象的引用变量

当方法结束时, this block 改变它的状态为未使用并且可用于执行下一个方法

堆内存大小与堆内存相比非常少。

三: Java程序中的堆和堆栈内存

通过一个简单的程序来理解堆 栈内存的使用情况

/**
 * Created by huanjulu on 12/10/17.
 */

public class HeapStackTestMemory {
   

    public static void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值