ios - NSRegularExpression 内存占用

标签 ios regex memory-leaks nsregularexpression

我一直在尝试降低我的应用程序的内存使用量,在分析后发现 NSRegularExpression 非常耗费内存。

我的一个 fistMatchInString 调用(第一个?)分配了 1 MB 的内存,该内存永远不会释放。并且每次调用 firstMatchInString 都会泄漏一个“NSConcreteValue”(不管它是什么)。

您是否经历过同样的行为,您知道如何避免吗?你知道 NSRegularExpression 的好的替代品吗?

在你问之前:我所有的正则表达式模式都很小并且是静态创建的。所有要匹配的字符串也都很小。

最佳答案

是的,正则表达式是昂贵的操作。

根据 NSPredicate 编程指南,据说:“正则表达式匹配尤其是一项昂贵的操作”,并且“因此您应该在正则表达式之前执行简单的测试”。

我让您阅读 predicate programming guide 的性能部分.我不知道谓词是否适用于您的情况,但您甚至可以从性能部分(位于“使用谓词”一章)中提取一些有值(value)的信息

编辑:

看这个link的正则表达式部分,他使用的是静态 NSRegularExpression 而不是每次都分配它。

从这个post ,即使它是关于 python 的,“+”似乎更贪婪,所以可能可以在你的正则表达式中进行一些改进,在表达式本身中,一些最佳实践来实现。

关于ios - NSRegularExpression 内存占用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11485725/

相关文章:

iphone - 在 iPhone 和 iPad 中实现 VOIP

ios - CLBeaconRegion initWithProximityUUID 返回 nil

regex - "\b"字边界如何影响 perl 中的输出?

python - Pandas 与 R 中相同的正则表达式但结果不同

regex - BASH 正则表达式检查在 Linux 上不匹配

c - 在 C 中释放内存时应考虑哪些主要事项?

iphone - 当我单击一个通知时从列表中删除所有推送通知

ios - 圆角渐变 UIButton iOS

javascript - Chrome 选项卡内存不断增长,堆大小保持不变

jquery - AJAX 调用可能导致站点内存泄漏