【问题标题】:Zend_Cache unserialize - memory hog?Zend_Cache 反序列化 - 内存占用?
【发布时间】:2011-03-17 20:25:09
【问题描述】:

我设置了 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"

这是一个常见问题,还是我遗漏了什么?

【问题讨论】:

标签: memory-management serialization zend-cache


【解决方案1】:

由于您正在序列化对象,因此需要大量内存。 尤其是 Zend_Db_* 对象。

在这里我们遇到了同样的问题,我们最终让您拥有自己的缓存系统。

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

祝你好运。 :)

【讨论】:

    猜你喜欢
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多