【问题标题】:What does "unload class" mean?“卸载类”是什么意思?
【发布时间】:2015-04-14 10:35:00
【问题描述】:

当一个类的静态变量不再存在时,我发现当一个类被卸载时,它们的静态变量会被重新初始化。 “卸载类”是否意味着销毁(如果我们假设这个类是一个活动)? 谢谢

【问题讨论】:

    标签: java android static


    【解决方案1】:

    卸载类可能发生也可能不发生,这取决于 JVM 实现,并且不应影响类加载器可访问的任何类。来自 JLS 的引用:

    当且仅当其定义的类加载器可以被垃圾收集器回收时,才能卸载一个类或接口”

    您可以在 ´Java language specification #12.7 中找到可能/可能不会发生的完整描述。

    【讨论】:

      【解决方案2】:

      如果类加载器需要内存来加载新类并且没有足够的可用内存,则卸载类 id。

      如果卸载的类在不同的时刻重新加载,则会重新初始化静态变量。

      【讨论】:

      • 基于 JLS,我认为类加载器负责卸载 A class or interface may be unloaded if and only if its defining class loader may be reclaimed by the garbage collector as discussedJLS 12.7
      • @SubOptimal 是的,我会给出答案。
      • @weston 查看我今天 14:00 左右的回答。
      猜你喜欢
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 2011-08-12
      相关资源
      最近更新 更多