Java类加载器和内存管理

时间:2016-06-21 18:05:38

标签: java garbage-collection jvm

当类加载器加载类A时,类加载器将加载哪些类,以及JVM中的内存位置是否会放置这些对象?如果flagfalse,则会加载课程D吗?

public class A {
  B b = new B();
  C c = null;
  static int i;
  int j;

  public static void main(String args[]) throws Exception {
    boolean flag = true;
    if (flag) {
        m1();
    }
    A a = new A();
    a.m2();
  }

  private static void m1() {
    D d = new D();
    d.print();
  }

  private void m2() {
    c = new C();
    System.out.println("inside m2");
  }

  private static void m3() {
    System.out.println("inside m3");
  }
}

1 个答案:

答案 0 :(得分:0)

  

所有类将由classloader加载

至少

AObject。根据实现,JVM可能会在类初始化时或在您创建第一个实例时加载BC。在C被调用之前,m2()可能不会被初始化。

  

将JVM中的内存位置放在这些对象中

无论您使用哪种ClassLoader,小对象都会放在Eden空间中。

  

如果flag为false,则加载D类

可能不是,但这取决于JVM。