JVM如何执行的Java方法

举例


public class Test{
    public static void main(String[] args){

        Calculator cal = new Calculator();

        cal.calculate();

    }

}

另一个类:

public Calculator{

    public void calculate(){

        int x = 0;

        int y = 1;

        Log.e("Calculate", "result is -->" + x/y);

}






流程:

1,首先,JVM开始运行时,会将Test.java、Calcultor.class 编译成 Test.class文件

2,程序开始运行时,会运行程序的入口方法   ----  main方法

3,JVM首先为该程序创建 方法区、堆区、栈区等

4,运行入口方法时,JVM会将Test.class装载进内存,然后在栈区中为main()方法创建一个栈帧

5,然后开始执行 Calculator cal = new Calculator();

6,首先会在方法区中装载Calculator.class,然后需要在堆区去创建一个Calculator实例对象,

7,这个实例对象会保有着方法区中Calculator.class的引用,即知道自己是哪个class文件的

8,然后调用cal.calculate();时,就会到Calculator类的方法表中进行方法的查找,如果找到了calculate()方法,就会在栈中,为calculate()方法创建一个栈帧,

9,然后接下来就会运行cal.calculate(); 此时就会去Calculator.class的字节码文件中去查找calculate()的方法体,然后去执行该方法体

推荐阅读更多精彩内容

  • 设计模式分类 总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原...
    lifeline丿毅阅读 291评论 0 1
  • Java OOP 什么是面向对象思想? 把一组数据和处理他们的方法组成对象(object),把相同行为的对象归纳为...
    chonglingliu阅读 105评论 0 0
  • JVM体系结构 JVM是一种解释执行class文件的规范技术。 JVM体系结构 我翻译的中文图: 中文图 类装载器...
    君无戏言599626120阅读 550评论 1 30
  • 一个什么都不怕的人;连死都不畏惧的人;最怕的是失去你 ~那才是真心真意真爱 一个什么都看明白...
    龙凤涅槃阅读 34评论 1 0
  • 他抛来了一个试探 我又一次不知所以的敷衍 这几天心情的余绪 像泉眼泛出细流 一阵阵苍翠心头 幻想起温暖里 家的陈设...
    moonseted阅读 18评论 0 0