JAVA程序运行的内存分析

这段代码演示了Java中对象的创建过程。首先,JVM加载类到方法区,然后在main方法中创建SxtStu对象,分配内存于堆中,并初始化其属性。对象的属性通过赋值符号进行设置,如id、sname、age和comp(Computer对象)。对象的引用存放在栈中的局部变量stu。最后,通过stu调用对象的方法执行相关操作。
摘要由CSDN通过智能技术生成

先上一段代码:

package Object;
public class SxtStu {
	int id;
	int age;
	String sname;
	Computer comp;
	void study(){
		System.out.println("我在认真学习使用的"+comp.brand);
	}
	void play(){
		System.out.println("我在玩游戏—");
	}
SxtStu(){}//构造器构造方法,用于创建这个类的对象。
	public static void main(String[] args) {
		SxtStu stu=new SxtStu();
		stu.id=1001;
		stu.sname="Jay";
		stu.age=18;
		Computer c1=new Computer();
		c1.brand="联想";
		stu.comp=c1;
		stu.study();
	}
}
class Computer{
	Stri

来看看这段代码是怎么运行的:

1 调用JVM执行类,加载代码,放在方法区。

2 找main方法,程序从main方法中开始执行,执行main方法开辟栈帧,放置局部变量stu=null。

new SxtStu()调构造方法 在栈中创建一个栈帧

3 执行完毕在堆中创建对象,对象中有属性,有方法,id=null.sname=null.age=0.comp=null. study().play();stu对象的地址15db9742

4 执行赋值符号,把创建好的对象给stu 。stu=15db9742。

5 执行 stu.id=1001 时通过栈stu 找到堆id。执行stu.sname="Jay"。把方法区中的字符串地址给堆

6 执行 stu.comp=c1把c1的值赋给stu

栈:放置局部变量,每个方法被调用会创建一个栈帧。JVM为每个线程创建一个栈,存放该线程:局部变量。栈是线程私有,先进后出。是一个连续的内存空间。

堆:放置new出来的对象,只有一个堆被线程共享,不连续的内存空间,分配灵活,速度慢。

方法区:类信息(Class对象),静态变量,静态方法字符串常量。存放程序唯一不变的内容。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值