栈空间内存和堆空间内存

栈空间内存、堆空间内存和方法区内存

​ 在学习Java的过程中,我们知道,我们编译出的class文件,需要加载到内存中才可以运行。在Java中,有三个很重要的内存空间:栈内存空间、堆内存空间以及方法区内存空间。今天,我就来谈一下我对于这三个内存空间的一些理解吧。


​ 首先,我们先来讲一下,什么是栈内存空间、堆内存空间、方法区内存空间。

  • 栈内存空间:

​ 栈是一种数据结构,特点是后进先出,意思是最后进入的数据会最先被读取。在栈内存空间中,存储的是方法以及局部变量。当方法被执行时,栈内存空间中就会为其分配内存,此时方法就会进入栈空间执行,称为压栈。当方法执行结束后,就会释放空间,称为弹栈,此时方法就会退出栈内存空间。方法一定是压栈和弹栈!

  • 堆内存空间

​ 堆内存空间是一块比栈内存空间大得多的空间,主要用于储存java程序中产生的对象。比如在程序中遇到new关键字,就会产生一个对象实例,这个对象实例会被存储在堆内存空间中。

  • 方法区内存空间

​ 方法区内存空间中保存的是代码片段、常量以及static修饰的变量。在jdk1.7以前,方法区内存空间中还存在一个常量池来储存常量(其中包含了String),在jdk1.8以后,常量池从方法区中移除,在堆区增加了元数据空间。


实例
  • 代码
public class Test
{
	public static void main(String[] args)
	{
		Test res = new Test();
		res.test();
	}
	
	public void test()
	{
		int a = 10;
		System.out.println(a);
	}
}
  • 内存区示意图

栈内存空间中所有方法执行结束后,都会弹栈,释放内存。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值