欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-11 08:41:01
请根据如下程序代码,画出对应的内存管理图(不需要画方法区),并写出输出结果。 1. 思路解析: 这题是内存管理的一道基础题,考察的是局部变量、实例变量、new出来的对象分别应该放在哪个位置(堆还是栈),难度不是很大。 结果如下: 输出结果为:row:2,col:5 2. 思路解析: 这依然是内存管理 ......

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

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关键字所创建的对象以及对象的属性成员变量。

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

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