首先,说明一下,这些都是听了尚学堂的马士兵老师的课学到的.是一种很好的习惯.java执行过程的内存分配:
head(堆):存放动态创建的东西,new出来的东西.对象的实体.
stack(栈):存放局部变量,以及对象的引用值.
data segement(数据区):存放静态变量和字符串常量.
code segement(代码区):存放代码.分析过程:
首先,找main()方法.一句一句往下走,
每当创建一个对象,在stack创建一个引用值,在head创建一个实体.
每当创建一个局部变量,在stack创建一个变量.
每当一个方法完成.为这个方法在stack里创建的变量和引用都消亡.
每当一个对象实体(head中)没有任何引用指向它的时候,当下次垃圾收集机制运作的时候,自动回收内存.用这样的内存分析,解决初级的程序问题,个人觉得非常有助于学习.

解决方案 »

  1.   

    我是个超级初级菜鸟,想请问楼主。
    我就是个写java程序的,对我而言知道在java执行过程的内存分配规则以后。
    在我写程序的时候,我应当注意些什么?
      

  2.   


    class Parent {
      void m() {
        System.out.println("parent");
      }
    }class Child extends Parent{
      void m() {
        System.out.println("child");
      }
    }public class Test {
      public static void main(String[] args) {
        Parent p = new Child();
        p.m();/*这里打印出来的是child,因为在head中创建p的时候,
                创建的是一个Child的实例,所以,在创建的时候m就被
                  重写了,这个时候的m指向的是重写后的m(),所以,打
                  印出来的是chld,希望可以对你理解多态有帮助.*/
      }
    }