Java的内存逻辑模型

理解java的内存逻辑模型

Java内存模型是每个java程序员必须掌握理解的,这是Java的核心基础,对我们编写代码特别是并发编程时有很大帮助。由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。
以下面代码为例,给出完整的内存逻辑模型。

class Student {
         int studentID;
         int age;
         String name;
         public static int classID;
         
         public Student(int studentID,int age,String name) {		
               this.studentID = studentID;
               this.name = name;		
               this.age = age;	
               }
               
         public void study(){		
               System.out.println(this.name + "正在学习");	
         } 	

         public static void showClassID(){	
          	System.out.println("班级ID号是:" + classID);
         	}
}
public class Application { 	
          public static void main(String[] args) { 
          		
          // 实例化一个类对象		
          Student p = new Student(1,21,"张三");
          
          // 输出类中的实例属性值		
          System.out.println("studentID = " + p.studentID + 
          ",age = " + p.age + ",name = " + p.name);
          
          // 输出类中的静态属性值		
          System.out.println("classID = " + Student.classID);
          
          // 调用实例方法		
          p.study(); 		
          
          // 调用静态方法		
          //Student.showClassID(); 
          
          // 实例化另一个类对象		
          Student p1 = new Student(1,21,"李斯"); 	
          }
  }
          

代码执行过程:

  1. 编译:
    源程序—〉编译器编译—〉字节码文件
  2. 程序执行:
    扫描字节码文件—〉JVM扫描—〉生成方法区的类对象
  3. 程序执行:
    每条语句的执行过程方法实现代码—〉解释器解释执行/编译器编译执行
  4. 程序结果:
    栈区的局部变量和形参、堆区的实例对象和类对象

Java内存逻辑对象模型图

Java的内存逻辑模型_第1张图片

Object的内存逻辑模型

Java的内存逻辑模型_第2张图片

Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起。作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现。
Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入。Object类没有定义属性,一共有13个方法(其中5个是虚方法)。

*自己能画内存图可以帮助读懂代码,理解代码的运行机制,要达到的目标就是,看着代码自己脑子里就能形成一张完整的内存图。

你可能感兴趣的:(Java学习,java内存图,Java内存逻辑模型)