2012-08-23 88 views
0

程序1:当我编写一个简单的类B而不在我的java程序中创建对象时。 JVM如何将内存分配给包含成员字段和成员函数的类代码。jvm如何运行程序

class B 
{ 
    int a=10; 
    public void print() 
    { 
     System.out.println("inside B class"); 
    } 

} 

方案2:当我创建该类的对象,然后JVM如何分配的对象的内存...见下文

class B 
{ 
    int a=10; 
    public void print() 
    { 
     System.out.println("inside B class"); 
    } 

    public static void main(String args[]) 
    { 
     B b=new B(); 
     b.print(); 

    } 
} 
+2

什么您的意思是“怎么做”?我们需要知道你的知识水平在这个话题中能够回答这个问题。有大约十几个关于这个问题的答案。回答所有这些问题需要一整本书。 –

回答

2

代码有三个层次的分配在这个例子中:

  • 当类加载时(通常是第一次在你的代码中引用它),然后为它的结构,它的代码和它的静态字段分配内存。

  • 当创建实例时(new B()),则分配非静态字段和某些元数据(对象头)的内存。这个记忆在堆上。

  • 当一个方法被调用时,那么堆栈中的内存被分配给该方法中的局部变量。

2

这个网站是非常丰富的,所以做一起来看看它的Link你就可以明白如何运行程序的JVM