内存

内存分为codesegment、datasegment、stack、heap。


程序执行过程

1、操作系统(windows或java虚拟机)把硬盘文件(exe或class文件)加载到代码区(codesegment)。
2、从main方法开始执行:

  局部变量保存在栈内存stack;

  对象保存在堆内存heap;

  字符串常量在datasegment,静态变量的引用也在datasegment

  方法只有一份,执行的时候才占用内存。同一类的对象共享该类的方法,非静态方法是针对每个对象进行调用。


this 和 supper,父类对象在子类对象内部


方法执行过程的内存过程

    public class Person {
        int id;
        int age;
        Person(int _id, int _age) {
            id = _id;
            age = _age;
        }
        public static void main(String[] args) {
            Person tom = new Person(2, 25);
        }
    }

1、在栈空间创建一个引用类型的变量 tom。

2、调用Person 类的构造方法,在堆内存创建一个对象。里面有两个成员变量 id 和 age,默认值都为0。并把这个对象的堆内存参考赋值给tom变量。

3、构造方法执行,变量 _id 和 _age 是方法的形参,是局部变量,在栈空间创建这两个变量。分别把常量2、25赋值给 _id 和 _age。

4、把 _id 和 _age 的值赋值给堆内存里的 id 和 age。

5、构造方法执行完毕,变量_id 和 _age清空。

原文地址:https://www.cnblogs.com/Mike_Chang/p/9812636.html