如何轻量级设计模式最小化内存

时间:2012-10-13 14:34:50

标签: design-patterns flyweight-pattern

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

我错过了什么吗?

3 个答案:

答案 0 :(得分:2)

flyweight模式背后的想法是你有一个指向 共享数据的小对象。

也就是说,对象的多个实例共享数据。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

  

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

Wiki article Flyweight

  

Flyweight是一种软件设计模式。 flyweight是一个对象   通过与其他人共享尽可能多的数据来最小化内存使用   类似的对象;当a时,它是一种大量使用对象的方法   简单的重复表示将使用不可接受的数量   存储器中。