java中关于程序运行时内存中情况

内存—栈堆

在java中,JVM将内存分为6个区域,这里我们只看栈和堆

栈:

方法的调用时在栈区进行的,每个方法的调用都是一个栈帧入栈出栈的过程.栈的特点是:先进后出

堆:

JVM的另一块区域称为"堆区",所有对象都在堆区存储,包括数组的对象,类的实例化对象,接口对象等.

下面我们来看一段程序:

public class Test1 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        printArr(arr);
    }

    public static void printArr(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

这是程序在内存中的图
在这里插入图片描述

在这里插入图片描述

出栈的顺序和入栈的顺序相反:

  1. printArr栈帧出栈
  2. main方法出栈

在这里,我们可以通俗的理解,将栈里面的内容比作遥控器,将堆里面的内容比作电视机.以上面为例,堆里面的数组是电视机,而main中的int[] arr和printArr()分别为遥控器,它们都可以操作电视机(数组).

总结:

  • 所谓对象就是实实在在在堆中保存的数据实体,new出来的都在堆中保存.

  • 数组的引用就是就是给这块的数组起了个名字,保存这个数组对象的首地址而已.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值