gpt4 book ai didi

Java 分配内存泄漏

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:06 24 4
gpt4 key购买 nike

我必须假设以下方法不会泄漏内存:

public final void setData(final Integer p_iData)
{
data = p_iData;
}

其中 data 是某个类的属性。

每次调用该方法时,新整数 都会替换当前存在的数据 引用。 那么当前/旧数据发生了什么?

Java 必须在底层做一些事情;否则,每次分配一个对象时,我们都必须清空所有对象。

最佳答案

简单的解释:

垃圾收集器会定期查看系统中的所有对象,并查看哪些对象无法再从 Activity 引用中访问。它释放任何不再可达的对象。

请注意,您的方法根本不会创建一个新的 Integer 对象。例如,可以一次又一次地传递对同一 Integer 对象的引用。

垃圾回收的实际情况比这复杂得多:

  • 现代 GC 倾向于分代,假设大多数对象都是短暂的,因此它不需要经常检查整个(可能很大的)堆;它可以经常检查“最近”的对象是否活跃
  • 对象可以有终结器——在它们被垃圾回收之前运行的代码。这会延迟一个周期对此类对象的垃圾收集,并且该对象甚至可以通过使其自身可访问来“复活”自己
  • 现代 GC 可以并行收集,并且有许多调整选项

关于Java 分配内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652106/

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