【问题标题】:how flyweight design pattern minimizes memory享元设计模式如何最小化内存
【发布时间】:2012-10-13 23:35:06
【问题描述】:

享元设计模式如何最大限度地减少内存使用?对我来说,它看起来不是创建对象,而是只是将对象持有的数据外部化,这意味着使用的内存是相同的。

我错过了什么吗?

【问题讨论】:

    标签: design-patterns flyweight-pattern


    【解决方案1】:

    享元模式背后的理念是,您有一个小对象指向共享数据。

    也就是说,不止一个对象实例共享数据。

    如果每个数据只有一个对象,它确实不会使用更少的内存,而是更多,因为您现在拥有数据和指向所述数据的指针。

    【讨论】:

      【解决方案2】:

      对齐和隐藏状态。大多数 OO 语言中的对象必须至少对齐 8 字节边界。 32 位处理器只能有效地访问 4 字节边界的数据。除了对象自己的数据外,额外的空间还用于存储每个对象的隐藏类指针(4 字节)。代表一个位的两个对象则至少占用 16 个字节。在 64 位处理器上,它通常是 16 字节对齐。

      在一些 OO 语言中,值对象用于处理小整数等常见情况。 Smalltalk 实现有 31 位小整数,并使用额外的位来表示是这种情况。

      【讨论】:

        【解决方案3】:

        引用http://www.oodesign.com/flyweight-pattern.html

        此模式的目的是使用共享来支持大量 具有部分内部状态的对象的共同点,其中 州的其他部分可能会有所不同。

        Wiki article Flyweight

        享元是一种软件设计模式。享元是一种物体 通过与其他人共享尽可能多的数据来最小化内存使用 类似的物体;这是一种在大量使用对象时 简单的重复表示将使用不可接受的数量 记忆。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-24
          • 2019-09-10
          相关资源
          最近更新 更多