在哪里用java创建对象
下面是我的一个朋友在一次讨论中提出的一个问题,但我们都不知道实际答案是什么在哪里用java创建对象,java,java-8,heap-memory,Java,Java 8,Heap Memory,下面是我的一个朋友在一次讨论中提出的一个问题,但我们都不知道实际答案是什么 public class Test { static int i = 5; static String str = "Welcome"; static Map<String, String> map = new HashMap<>(); } 我们知道内存区域保存与类相关的所有数据(包括静态引用),而堆区域保存类的所有实例变量 但是对于上面的班级 - int variable is created
public class Test {
static int i = 5;
static String str = "Welcome";
static Map<String, String> map = new HashMap<>();
}
我们知道内存区域
保存与类相关的所有数据(包括静态引用),而堆区域
保存类的所有实例变量
但是对于上面的班级
- int variable is created(We assume that it will be created in method area
- Not sure about the other two object(String and HashMap)
如果我们误解了什么,请纠正我们,并帮助我们理解这些变量将如何存储在java中。对于Oracle JVM,每个类都有一个特殊的对象来保存其静态字段。如果执行堆转储,可以看到这个特殊对象
注意:没有关于静态成员存储位置的规范,因此它可以是基于JVM的任何位置。所有对象都是在堆上创建的,如您所述。错误1:静态字段在加载类时初始化。
- int variable is created(We assume that it will be created in method area
- Not sure about the other two object(String and HashMap)