1.4(java学习笔记) 面向对象内存分析

时间:2023-03-09 00:16:38
1.4(java学习笔记) 面向对象内存分析
 

首先介绍几个概念

栈:

1.栈是方法执行的内存模型,每调用一个方法都会创建一个栈帧。

2.jvm为每个线程创建一个栈,存放方法相关信息,栈属于线程私有不共享。

3.栈由系统自动分配,是连续的内存空间,速度快。

4.栈的特点是先进后出。

堆:

1.堆用于存放创建好的对象。

2.jvm只有一个堆被所有线程共享

3.堆是不连续的内存空间,但由于不连续分配灵活。

静态区:

1.静态区只有一个被所有线程共享。

2.静态区其实也是堆,用来存放常量,类等不变的信息。

以下列代码为例:

有些部分忽略了,只是简述下过程,理解错误之处还望指出。

1 public class Student {  //首先构造了一个学生类,里面包含一些基本信息(姓名,学生所使用电脑信息)
2 String name;
3 Computer user_computer;
4
5 void study(){ //还有学生学习(学习的方法中又包含一个电脑的对象)和玩耍的方法
6 System.out.println("我在学习" + user_computer.brand);
7 }
8 void play(){
9 System.out.println("我在玩耍");
10 }
11
12 public static void main(String[] args){
13 Student stu_huangChangfan = new Student();//首先根据学生类这个模板创建一个具体的对象
//huangChangfan这个对象中包含姓名,使用电脑品牌基本属性
14 Computer comput = new Computer(); //以及玩耍和学习的方法(学习方法中又包含一个电脑对象)
//这时需要创建一个电脑对象,并对其赋值。
15 comput.brand = "联想"; //对新建的对象赋值
16 stu_huangChangfan.user_computer = comput; //电脑对象有了具体的信息后赋给学生对象中的电脑对象。
17 stu_huangChangfan.study(); //调用学生对象中方法。
18 stu_huangChangfan.play();
19 }
20 }
21
22 class Computer{ //电脑类,其中包含电脑品牌等信息。
23 String brand;
24 }

下面用一个自己做的小视频结合代码理解。