swa*_*ner 6 iphone memory-management instruments ios
我正在调整我的iPhone/iPad应用程序的性能,似乎并非所有的内存都应该被释放.在乐器中,在我模拟器中模拟内存警告后,剩下很多"Malloc"条目; 它们是关于什么的?我可以摆脱它们,它们意味着什么/它们代表什么?
非常感谢,
斯特凡

在任何时候,您的应用程序都会有(大量)活动对象,即使在收到内存警告(以及操作系统随后进行的内存恢复)之后也是如此。因此,您经常会看到许多这样的 malloc。
它们本身并不表示内存分配有问题,而可能只是表明您的程序正在运行。
另请参阅此SO 主题以了解有关对象分配工具的更多信息。
此外,您可以使用许多高级技术来检测内存分配问题。 在这里您可以找到一个很棒的教程,它将让您超越 Leaks 工具所允许的范围。
编辑:
关于这些 malloc 的确切含义,您必须认为您可以分配两大类对象(粗略地说):通过 Obj-C 运行时系统创建的 Objective-C 对象和“普通”C 对象,通过 malloc 分配。
第二类的许多对象是由系统库和编译器 C 库(例如套接字或文件句柄等)分配的(无需直接调用 malloc)。这些 (C) 对象没有与之关联的类型信息,因此 Instruments 只是向您显示分配的内存块的大小,而没有更多可用信息。
很多时候,malloc 对象是由更高级别的类创建的,因此当您恢复与其实例关联的内存时,通过 malloc 分配的内存也会被释放。
您不应该特别担心它们,除非您看到它们的总体大小随着程序执行“无限增长”。在这种情况下,您需要首先研究分配/释放更高级别对象的方式,并了解代码中的哪些地方陷入困境。
| 归档时间: |
|
| 查看次数: |
5901 次 |
| 最近记录: |