【发布时间】:2015-09-15 14:33:31
【问题描述】:
一个类的所有对象共享静态变量。 但是什么时候为静态变量分配内存呢?是在为类创建第一个对象时吗?或者它甚至在创建类的任何实例之前就发生了? 实例变量也在运行时分配内存。静态变量的内存是在运行时还是编译时分配的?
【问题讨论】:
-
这是一个实现细节。您是否有想知道的特定实现或保证?
-
它是definitively not at compile-time。它是在创建第一个对象之前(您可以访问静态字段/方法而无需创建此类的实例)。我的直觉告诉我,这些是在加载类时分配的。
-
一个小细节:一个类的所有对象共享静态变量。这是一种误解。静态字段属于类,而不是实例。但是,您可以从类的实例中访问它们。有了这个视图,就可以直观的看到类加载时分配静态字段。
标签: java memory-management static