Java基础练习4(内存管理)

时间:2022-09-01 13:45:01

请根据如下程序代码,画出对应的内存管理图(不需要画方法区),并写出输出结果。

1.

public  class Cell{
int row;
int col;
public Cell(int row,int clo){
this.row=row;
this.col=col;}
public static void main(String []args){
Cell c=new Cell(2,5);
System.out.println("row:"+row+",col:"+col);
}
}

思路解析:

  这题是内存管理的一道基础题,考察的是局部变量、实例变量、new出来的对象分别应该放在哪个位置(堆还是栈),难度不是很大。

  结果如下:

  Java基础练习4(内存管理)

  输出结果为:row:2,col:5

2.

public class Test{
public static void main(String []args){
int [] arr=new int[]{10,30,50};
int a=8;
modify(arr,a);
System.out.println("arr:"+Arrays.toString(arr));
System.out.println("a的值:"+a);
   }
public static void modify(int [] arr,int a){
arr[0]=5;
a=45;
}
}

思路解析:

  这依然是内存管理的一道基础题,比起上题多考验了一个main方法以外的方法内的局部变量的内存管理。方法调用时分配内存,方法调用结束后移除即可。

  结果如下:

  Java基础练习4(内存管理)

  输出结果为:

    arr:[5,30,50]

    a的值:8

每日笔记:

  JVM将内存分为了几个区域,每个区域都存储的是什么?

   JVM会将申请到的内存从逻辑上划分为三个区域:堆、栈、方法区。这三个区域分别用于存储不同的数据。

   堆:用于存储使用new关键字所创建的对象以及对象的属性成员变量。

   栈:用于存储程序运行时在方法中声明的所有的局部变量。

   方法区:用于存放类的各种信息(包括方法)、静态变量、常量池等都在方法区存储。