Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.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_Memory Management_Static - Fatal编程技术网

java中何时为静态变量分配内存?

java中何时为静态变量分配内存?,java,memory-management,static,Java,Memory Management,Static,类的所有对象共享静态变量。 但是什么时候为静态变量分配内存?是在为类创建第一个对象时吗?或者它是在创建类的任何实例之前发生的? 实例变量也是在运行时分配的内存。静态变量的内存在运行时或编译时分配?当类在运行时加载时。您可以找到详细信息。当类加载器加载该类时,将为所有静态变量分配memeory,并且只执行一次这是一个实现详细信息。您是否有一个特定的实现或保证您想知道?它是。在创建第一个对象之前(您可以访问静态字段/方法,而无需创建此类的实例)。我的直觉告诉我,这些都是在类加载时分配的。这正是您想要

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

当类在运行时加载时。您可以找到详细信息。

当类加载器加载该类时,将为所有静态变量分配memeory,并且只执行一次这是一个实现详细信息。您是否有一个特定的实现或保证您想知道?它是。在创建第一个对象之前(您可以访问静态字段/方法,而无需创建此类的实例)。我的直觉告诉我,这些都是在类加载时分配的。这正是您想要知道的一个小细节:类的所有对象都共享静态变量。这是一种误解。静态字段属于类,而不是实例。但是,您可以从类的实例访问它们。通过此视图,可以直观地看到,在加载类时会分配静态字段