我的问题是,当我们为一个类变量创建两个对象时,内存中会发生什么。 例如:
class a = new class();
a = new class();
当时,两者都分配在同一内存中
答案 0 :(得分:2)
在堆上分配了两个对象。第一个被第二个语句中的替换,并且当有足够的内存压力需要进行垃圾收集时,垃圾收集器将对其进行重新分配。
答案 1 :(得分:0)
class a = new class();
这将创建两件事:堆上类的实例,以及对该实例的引用a
。
a = new class();
这将在堆上创建该类的新实例,并将引用a
更改为指向新实例。先前的实例将保留在内存中,但是在没有其他引用的情况下也无法访问(aka refcount为0),并且将在运行时由垃圾收集器清除。