java - Java中的内存分配/释放

标签 java

我是java初学者。假设我声明了一个 Account 类型的变量

Account _account = new Account("Thomas");

然后在其他地方我做了这样的事情:

_account = new Account("George");

在第一条语句中分配了变量_account 的内存槽会发生什么?它会自动重新分配吗?此操作是否会在内存方面产生任何成本?谢谢。

最佳答案

如果没有对旧对象的引用,那么它将被自动垃圾回收。 (或者,更准确地说,它将可用于垃圾收集,当垃圾收集器找到它时,内存将自动回收。)

如果您不将原始 _account 引用分配给任何内容并简单地覆盖它,则以上内容为真。但是,如果您这样做:

Account _account = new Account("Thomas");
List<Account> accounts = new ArrayList<>();
accounts.add(_account);

_account = new Account("George");

然后旧对象仍然有一个引用(间接地)通过 accounts 列表。只要可以通过代码中的任何 Activity 变量以某种方式到达原始对象,它就不会受到垃圾收集的影响。

关于java - Java中的内存分配/释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22122217/

相关文章:

java - 如何在java中初始化一个字符串而不导致初始化导致程序出现问题?

java - MongoDB Java - 推送到嵌套数组?

java - 使用 Scribe 获取带有特定主题标签的推文

java - 找不到 hibernate 的 cfg.xml

java - Java中如何让一个线程从另一个线程 hibernate

java - 列表中的 EditText 未按应有的方式工作

java - JAVA并行处理

java - MySQL CallableStatement.getObject 具有不一致的行为

java - 如何在 Java 中计算 ((Integer)^(double)) % (Integer)?

java - 参数Class<怎么填写?扩展 'some class' >?