我设置了 Zend_Db_Table_Abstract,因此它使用元数据缓存,然后使用 xhprof 进行概要分析以查看它使用了多少内存。
原来从 _setupMetadata 到 Zend_Cache_Core::load 的 34 次调用占用了 7mb 内存,其中大部分被调用 unserialize 使用。
元数据缓存的配置是:
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"
这是一个常见问题,还是我遗漏了什么?
最佳答案
由于您正在序列化对象,因此它会占用大量内存。 特别是 Zend_Db_* 对象。
在这里我们遇到了同样的问题,我们最终让您拥有自己的缓存系统。
你可以做的是定义 sleep /唤醒,这样你就可以从 Zend_Db_Table_Row_Abstract 中删除所有不必要的 ivar,但你必须确保不破坏类不变性。
祝你好运。 :)
关于memory-management - Zend_Cache 反序列化 - 内存占用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3280216/