gpt4 book ai didi

cocoa - NSDocument 和 NSFileWrapper : strategy to reduce memory footprint?

转载 作者:行者123 更新时间:2023-12-03 17:39:52 24 4
gpt4 key购买 nike

基于Apple Docs ,使用 NSDocument 的文件包的推荐做法似乎是保留对根NSFileWrapper的引用在定制NSDocument实现。

我的问题:这是否意味着我的文档的内存占用量最终会增加两倍?

想象一个简单的文档,其中包含一个 NSString实例变量text 。假设文本可能很大。

readFromFileWrapper:…我读了NSString来自文件包装器数据并将其存储在text中。但是,由于文件包装器是一个实例变量,因此它是原始的 NSData仍然存在,尽管我需要的只是 NSString版本。

有什么反对丢弃 NSFileWrapper 的内容吗?当我读完之后?

编辑:当考虑 iOS 和 UIDocument 时,这就更有趣了。 。我的文档可能包含数百张图像。

最佳答案

这是个好问题,但我要直截了本地回答。

首先,不要过早优化。如果您拥有的只是相对较小的文件,那么您不必担心这一点。您应该让您的应用程序正常运行。

如果您的应用程序运行后,您发现您的文件往往非常大(例如数百兆字节),您可能会考虑对此进行优化。

请记住,当今的机器通常具有 8GB 或更多 RAM。需要大量数据来填充它。另外,使用虚拟内存,NSFileWrapper将映射到数据文件中,这意味着它们至少在读取时会驻留在内存中,但之后它们可以以零成本进行分页(它们不需要被写回磁盘,因为它们已经在磁盘上)。

已占用但无需磁盘访问即可释放的内存本质上是空闲内存。

所以,再次强调,当你没有实际性能不佳的真实测试用例时,不要尝试优化,因为系统已经进行了令人难以置信的优化,如果你在无法测试的情况下优化自己,你就会可能会让事情变得更糟。

关于cocoa - NSDocument 和 NSFileWrapper : strategy to reduce memory footprint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21000094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com