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出来的对象分别应该放在哪个位置(堆还是栈),难度不是很大。
结果如下:
输出结果为: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方法以外的方法内的局部变量的内存管理。方法调用时分配内存,方法调用结束后移除即可。
结果如下:
输出结果为:
arr:[5,30,50]
a的值:8
每日笔记:
jvm将内存分为了几个区域,每个区域都存储的是什么?
jvm会将申请到的内存从逻辑上划分为三个区域:堆、栈、方法区。这三个区域分别用于存储不同的数据。
堆:用于存储使用new关键字所创建的对象以及对象的属性成员变量。
栈:用于存储程序运行时在方法中声明的所有的局部变量。
方法区:用于存放类的各种信息(包括方法)、静态变量、常量池等都在方法区存储。