Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java类加载器和内存管理_Java_Garbage Collection_Jvm - Fatal编程技术网

Java类加载器和内存管理

Java类加载器和内存管理,java,garbage-collection,jvm,Java,Garbage Collection,Jvm,当类加载器加载classA时,类加载器将加载哪些类,这些对象将放在JVM中的哪个内存位置?如果flag为false是否将加载类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

当类加载器加载class
A
时,类加载器将加载哪些类,这些对象将放在JVM中的哪个内存位置?如果
flag
false
是否将加载类
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");
  }
}
所有类都将由类加载器加载

A
对象
作为最低要求。根据实现的不同,JVM可能会在类初始化时或创建第一个实例时加载
B
C
<在调用
m2()
之前,可能不会初始化code>C

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

无论使用哪个类装入器,小对象都会放置在Eden空间中

如果标志为false,是否将加载D类

可能不会,但这取决于JVM

所有类都将由类加载器加载

A
对象
作为最低要求。根据实现的不同,JVM可能会在类初始化时或创建第一个实例时加载
B
C
<在调用
m2()
之前,可能不会初始化code>C

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

无论使用哪个类装入器,小对象都会放置在Eden空间中

如果标志为false,是否将加载D类


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

B的声明是静态的B=new B();只需使用
-verbose:class
运行并查看。除此之外,在问题中发布完整的代码也是一个好习惯;只需使用
-verbose:class
运行并查看。除此之外,在问题中发布完整的代码也是一个好习惯。