【问题标题】:When is the memory allocated for a static variable in java?什么时候为java中的静态变量分配内存?
【发布时间】:2015-09-15 14:33:31
【问题描述】:

一个类的所有对象共享静态变量。 但是什么时候为静态变量分配内存呢?是在为类创建第一个对象时吗?或者它甚至在创建类的任何实例之前就发生了? 实例变量也在运行时分配内存。静态变量的内存是在运行时还是编译时分配的?

【问题讨论】:

  • 这是一个实现细节。您是否有想知道的特定实现或保证?
  • 它是definitively not at compile-time。它是在创建第一个对象之前(您可以访问静态字段/方法而无需创建此类的实例)。我的直觉告诉我,这些是在加载类时分配的。
  • 这正是你想知道的stackoverflow.com/questions/6569557/…
  • 一个小细节:一个类的所有对象共享静态变量。这是一种误解。静态字段属于类,而不是实例。但是,您可以从类的实例中访问它们。有了这个视图,就可以直观的看到类加载时分配静态字段。

标签: java memory-management static


【解决方案1】:

在加载类时,在运行时。你可以找到详情here

【讨论】:

    【解决方案2】:

    当类加载器加载类时,所有静态变量的内存都会被分配,并且只会分配一次

    【讨论】:

      猜你喜欢
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-02
      相关资源
      最近更新 更多