gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 21:48:08 28 4
gpt4 key购买 nike

我是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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com