2010-07-19 47 views
3

我已经设置了Zend_Db_Table_Abstract,因此它使用元数据缓存,然后使用xhprof进行配置以查看它使用了多少内存。Zend_Cache反序列化 - 内存猪?

结果从_setupMetadata到Zend_Cache_Core :: load的34个调用使用了7MB内存,其中大部分内容通过调用反序列化来使用。

的元数据高速缓存的配置是:

resources.cachemanager.db_metadata.frontend.name = Core 
resources.cachemanager.db_metadata.frontend.options.automatic_serialization = true 
resources.cachemanager.db_metadata.frontend.options.lifetime = null 

resources.cachemanager.db_metadata.backend.name = File 
resources.cachemanager.db_metadata.backend.options.cache_dir = APPLICATION_PATH "/../data/cache/db_metadata" 

这是一个常见的问题,还是我失去了一些东西?

+0

它看起来像[表元数据缓存](http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.metadata.caching)使用任何实例[Zend_Cache_Core](http://framework.zend.com/manual/en/zend.cache.frontends.html#zend.cache.frontends.core)。有[很多后端](http://framework.zend.com/manual/en/zend.cache.backends.html)可用。他们执行任何更好,记忆方面? – Charles 2010-07-26 07:52:40

回答

0

由于序列化对象会占用大量内存。 特别是Zend_Db_ *对象。

在这里,我们有同样的问题,我们最终在让你自己的缓存系统。

你可以做的是定义睡眠/唤醒,以便从Zend_Db_Table_Row_Abstract中移除所有不必要的ivar,但是你必须确保不会破坏类不变量。

好运。 :)