gpt4 book ai didi

ios - ObjC 对象内存分析/解析 iOS 128kB 限制

转载 作者:行者123 更新时间:2023-11-29 10:34:20 24 4
gpt4 key购买 nike

我有一个 Parse 拒绝让我保存的对象,因为它有 128kB 的限制......跟随这个方便的 SO 帖子:Checking the size of an object in Objective-C ,我能够将我的对象的大小输出为 144(malloc_size 没有具体说明它的单位,但我假设是字节)。如果以 kB 为单位,我的对象确实超过了 128kB 的限制。但是,这个对象永远不应该在 kB 范围内——它是两个指针和三个 NSNumber(用作 bool 值)...即使在 64 位系统上允许对象开销和过度分配,我们仍然在 200 字节范围——考虑到 Parse 的开销,我们可以安全地说 1kB。仍然......远小于 128kB。

具体错误是:错误:对象太大——应该小于 128 kB。 (代码:116,版本:1.5.0)

这让我开始思考——有哪些好的测试工具或调试此类问题的日志语句?我最熟悉 Apple 包含的分析器和标准的 C/C++ 工具,如 Valgrind,但我不确定对特定对象的内存自省(introspection)以判断哪个属性正在占用其 RAM...

更具体到上面列出的项目 -- Parse 采用了什么样的技巧,三个 NSNumber 和两个指针在保存时占用 128kB,我该如何调试它?

最佳答案

对于那些寻找 Parse 为何会出现此错误的答案的人——答案是 Parse 中存在错误。我采纳了 Ryan 的建议并使用断点进行了额外调试,对象的大小确实远不及 Parse 声称的大小。

我清除了 Parse 数据库——错误全面消失,此后没有再出现。

对于那些希望进行性能分析的人来说,Apple 的内置性能分析器是一个很好的起点(Product->Profile->Allocations)——之后,从原始问题中的链接输出特定成员变量的内存大小,以及然后当所有其他方法都失败时,在 LLVM 的控制台中使用断点和打印大小。

不幸的是,我一直无法找到一种更自动化的方式来完成所有这些工作。

希望这对以后的人有帮助。

关于ios - ObjC 对象内存分析/解析 iOS 128kB 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27895881/

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