Java基础笔记06-堆、栈、方法区之间的关系

堆、栈、方法区之间的关系

1.栈(Stack)、堆(Heap)、方法区简介
  • 栈:每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象,是对象在堆区的地址),对象都存放在堆区中 。程序的运算也在栈中进行。
  • 堆:一个可动态申请的内存空间,通常用于保存new 构造出来的对象。
  • 方法区:在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)。

创建一个宠物Pets类

public class Pets {
	//属性
	private String name;
	private String gender;
	private int age;
    
	//全属性构造器
	public Pets(String name, String gender, int age) {
		this.name = name;
		this.gender = gender;
		this.age = age;

	//介绍:
	public void intro() {
		System.out.println("我的宠物名叫"+name);
		System.out.println("性别是"+gender);
		System.out.println("今年"+age+"岁了");
	}
	//叫声
	public void yell(String yelling) {
		System.out.println("它的叫声是"+yelling);
	}
	//摇尾巴
	public void shaking() {
		System.out.println("它在摇尾巴。");
	}
}

使用Pets类

public class Demo {

	public static void main(String[] args) {
//		创建新对象,并初始化属性
		String newName = "大黄";
		String newGender = "公狗";
		int newAge = 3;
		Pets dog = new Pets(newName,newGender,newAge);
//		调用方法
		dog.intro();
		dog.yell("汪汪汪");
		dog.shaking();
	}
}

根据上面的代码进行堆、栈、方法区的区别说明

在这里插入图片描述

  • Java 程序运行时可简要将内存划分成三种:
    • 一种是栈内存,一种是堆内存,一种是方法区。
    • 函数运行时,先从main函数进入程序,从上往下运行,获取基本类型的变量,存于栈中。
    • 创建一个新对象,在堆中存放新建的对象,并初始化对象属性,并将对象的地址放在栈中,以便于对应查找对象的数据。
    • 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。
    • 当方法被使用时从方法区进入栈中进行运算的过程被称为进栈或压栈,将方法的运行结果存到相应位置后,此方法作用结束,从栈中被释放的过程被称为出栈或弹栈。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值