Memory management 什么是惰性分配?

Memory management 什么是惰性分配?,memory-management,Memory Management,对象的延迟分配意味着什么?它有什么用处?延迟分配只是指在实际需要资源之前不分配资源。这在单例对象中很常见,但严格来说,每当资源分配尽可能晚时,都会出现延迟分配的示例 通过延迟资源的分配直到您真正需要它,您可以减少启动时间,甚至在您从未实际使用该对象的情况下完全消除分配。相比之下,您可以预先分配一个您希望以后需要的资源,这可以使以后的执行更加高效,但以牺牲启动时间为代价,还可以避免以后在程序执行中分配失败的可能性 以下代码提供了一个延迟分配的单例示例: public class Widget {

对象的延迟分配意味着什么?它有什么用处?

延迟分配只是指在实际需要资源之前不分配资源。这在单例对象中很常见,但严格来说,每当资源分配尽可能晚时,都会出现延迟分配的示例

通过延迟资源的分配直到您真正需要它,您可以减少启动时间,甚至在您从未实际使用该对象的情况下完全消除分配。相比之下,您可以预先分配一个您希望以后需要的资源,这可以使以后的执行更加高效,但以牺牲启动时间为代价,还可以避免以后在程序执行中分配失败的可能性

以下代码提供了一个延迟分配的单例示例:

public class Widget {
    private Widget singleton;

    public static Widget get() {
        if (singleton == null) {
            singleton = new Widget();
        }
        return singleton;
    }

    private Widget() {
        // ...
    }

    // ...
}
请注意,此代码不是线程安全的。在大多数情况下,对
get()
方法的访问应该以某种方式同步


类似的(也许更一般的)概念是。

术语“后期对象”和“惰性初始化”是同义词吗?正如本文的标题Java如何编程:后期对象版本?我在谷歌上搜索了一下,但除了那本书之外找不到任何参考资料。@hydeph,看起来Deitel有那本书的两个版本,一个是“late objects”,其中最初的章节是程序式的(稍后介绍类/对象),另一个是“early objects”,其中类/对象是立即介绍的。他们使用“晚期对象”和“早期对象”来区分这些教学风格。它与延迟初始化没有任何关系。