繁体   English   中英

Java类加载器和内存管理

[英]Java classloader and memory management

当类加载器加载类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");
  }
}

哪个类将由classloader加载

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

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

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

如果flag为false,则加载D类

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM