Java堆堆栈_Java堆和堆栈

我想再次学习Java,因为我几年前就离开了 . 读一本书我在理解Java如何在堆中和堆栈中分配内存时遇到了问题 .

这就是我所理解的 - 我会尝试用例子来谈论它 .

class TestA {

int a;

void methodA(int b) {

a = b;

}

int getA() {

return a;

}

}

这是一个展示不同情况的示例类 . 这是我的主要内容:

int b = 3;

TestA obj = new TestA();

obj.methodA(b);

obj.getA();

那会发生什么?

## BEGIN

堆栈 - 为主要功能占用一些内存

HEAP - 空的

## int b = 3

堆栈 - [为主要功能占用一些内存 - >这里我们有b]

HEAP - [空]

## TestA obj = new TestA()

堆栈 - [为主要功能占用一些内存 - >这里我们有b和对TestA的引用]

HEAP - [为int a记忆]

## obj.methodA(b);

堆栈 - [为主要功能占用一些内存 - >这里我们有b和对TestA的引用]

HEAP - [为int a取一些内存]和[methodA的另一个内存]

## execute methodA(int b)

STACK - [为主函数占用一些内存 - >这里我们有b和对TestA的引用]和[占用methodA()的内存 - >这里我们在这个函数中使用了b]

HEAP - [为int a取一些内存]和[methodA的另一个内存]

我们有:

对象和实例字段(原始与否)在堆中

堆栈中的函数和作用域值

这样对吗?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值