声明上的内存分配与方法内部的分配(Java)

声明上的内存分配与方法内部的分配(Java),java,arrays,memory-management,Java,Arrays,Memory Management,以下两个代码在内存分配段方面有什么区别?事实上,我想知道数组是否分配在相同的内存段中 public class A{ int[] arr; void foo(){ arr = new int[100]; } } 及 第一个版本在调用foo方法时创建数组,第二个版本在加载类时创建数组。我知道,但我的意思是,如果内存上的分配段相同或不同,“内存段”是什么意思?(所有的都会放在同一堆上…)好的,谢谢,如果是这样的话,那就没有什么区别了。我这样问是因为我认为,与c/c++一样,如果编译器从一

以下两个代码在内存分配段方面有什么区别?事实上,我想知道数组是否分配在相同的内存段中

public class A{
 int[] arr;
 void foo(){
  arr = new int[100];
 }
}


第一个版本在调用
foo
方法时创建数组,第二个版本在加载类时创建数组。我知道,但我的意思是,如果内存上的分配段相同或不同,“内存段”是什么意思?(所有的都会放在同一堆上…)好的,谢谢,如果是这样的话,那就没有什么区别了。我这样问是因为我认为,与c/c++一样,如果编译器从一开始就知道数组的大小,那么它可能会分配到数据段中,JVM规范中没有“内存段”这样的东西。这两个数组都存储在堆上,就像Java中的任何其他对象一样。第一个版本在调用
foo
方法时创建数组,而第二个版本在加载类时创建数组。我知道这一点,但我的意思是,内存上的分配段是否相同,“内存段”是什么意思?(所有的都会放在同一堆上…)好的,谢谢,如果是这样的话,那就没有什么区别了。我这样问是因为我认为,与c/c++一样,如果编译器从一开始就知道数组的大小,那么它可能会分配到数据段中,JVM规范中没有“内存段”这样的东西。这两个数组都存储在堆上,就像Java中的任何其他对象一样。
public class A{
 int[] arr = new int[100];
}