对象的内存模型

1.代码

public class Test
{

	public static int a = 1;

	public static final int b = 2;

	int c = 3;

	public void methoda()
	{
        int d = 4;
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
        System.out.println(d);

	}

}

2对象分析

代码中字段a,b分别表示为静态变量和常量存储在方法区中

代码中方法methoda()该方法的方法描述(包含在类信息中)存在方法区中

代码中的实例变量c(即类的属性字段)是存储到堆中的

代码中的局部变量的存储也是在类信息中但是在对象调用该方法时,方法中所使用的各种变量是存储在栈中的(本地方法即native方法中的各种变量是在本地方法栈中,普通方法中的各种变量是存储在虚拟机栈上);

注: 方法的使用往往对应着一个栈帧在栈上从入栈到出栈的过程。(所以在使用递归的时候很容易发生虚拟机栈内存溢出,因为方法在没有使用完成时是不会出栈的,递归过多则会导致栈帧创建过多导致溢出);

堆中存储的对象实例数据只会保存字段属性不会保存任何方法和方法的描述

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值