Java 类加载器和内存管理

标签 java garbage-collection jvm

当类加载器加载类A时,类加载器将加载哪些类以及这些对象将被放置在JVM中的哪个内存位置?如果flagfalseD类会被加载吗?

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");
  }
}

最佳答案

Which all classes will be loaded by classloader

至少

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

in which memory location in JVM these objects would be put

无论您使用哪个类加载器,小对象都会放置在 Eden 空间中。

If flag is false will class D be loaded

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

关于Java 类加载器和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37951533/

相关文章:

java - 如何修改默认 JVM 设置

java - 在静态 block 中初始化线程?

Java 约定返回自己的实例列表?

c# - 枚举比手动检查不同的变化更便宜时,是否在比较期间将 1,000 多个字符串转换为小写?

ios - IOS 5 SDK 中的 Objective C 2.0 垃圾收集器 VS 自动引用计数器

java - 为什么java没有直接的内存管理工具?

java - 开始为 JVM 分配内存

java - 如何从 native 函数按值返回?

java - 将 JTable 添加到 JTabbedPane 中?

java - 为什么我无法在 hazelcast mancenter 控制台中获取 map 条目?