打开debug navigator
(您应用的初始内存消耗量
应该是大约25MB),只需玩你的空应用程序
下拉菜单,并观察内存消耗在短时间内显着增长。
然后从Xcode中的Open Developer Tool
打开Instruments
,在
Choose a profiling template
选择Leaks
并选择您的应用为
目标,然后单击记录按钮。
现在只需使用您的应用,调整窗口大小,打开下拉菜单 菜单。几分钟后你会注意到内存消耗 如果单击
应用程序的内存泄漏将继续增长,直到系统内存不足为止。
列表太长,所以我只包括一些,但所有这些都是来自AppKit,无一例外:
_NSLocalEventObserver 1 0x60000023ab00 32 Bytes AppKit + [NSEvent addLocalMonitorForEventsMatchingMask:placement:handler:]
_NSViewAuxiliary 1 0x110107080 448 Bytes AppKit -[NSView(NSInternal) _allocAuxiliary:]
NSPopUpButtonCell 1 0x6080001c7530 240 Bytes AppKit -[NSControl initWithFrame:]
NSControlAuxiliary 1 0x60800024c840 48 Bytes AppKit -[NSControl _commonEarlyInit]
NSMutableDictionary 1 0x60800024c6c0 48 Bytes AppKit -[NSCell setFont:]
NSPopUpButton 1 0x60800036e940 192 Bytes AppKit -[NSSpellChecker init]
NSCellAuxiliary 1 0x6080000eb280 128 Bytes AppKit -[NSCell init]
Malloc 48 Bytes 1 0x60800024c6f0 48 Bytes AppKit -[NSCell setFont:]
NSMenu 1 0x608000861f40 64 Bytes AppKit -[NSPopUpButtonCell initTextCell:pullsDown:]
_NSMenuImpl 1 0x6080000cdc10 112 Bytes AppKit -[NSMenu _createExtraIvars]
NSCarbonMenuImpl 1 0x6080000cdc80 112 Bytes AppKit -[NSMenu _createMenuImpl]
NSExtraMICData 1 0x608000038c00 32 Bytes AppKit -[NSMenuItemCell initTextCell:]
NSMutableArray 1 0x60800024daa0 48 Bytes AppKit -[NSMenu insertItem:atIndex:]
这是一个已知的错误吗?我还没有触及Xcode生成的代码。 AppKit或Cocoa框架中是否存在内存泄漏,或者两者都有?或者我做错了什么?
答案 0 :(得分:1)
由于(4),内存大小会增加 - 菜单之类的对象在首次使用之前可能无法分配,等等 - 但这种增长不会无限制。
无法重现您的结果:在10.13.2& Xcode 9.2没有看到无限制的增长,也没有泄漏报告。
这并不是说你没有看到它,只是原因未知,但不太可能是框架本身的“泄漏”。尝试其他机器,检查您的设置等。