Xcode Cocoa框架中是否存在内存泄漏?还是我遗漏了什么? 要重现此问题,只需创建Cocoa应用程序,请选择 Swift或Objective-C(我已经测试了两者)都可以运行该项目
打开调试导航器(应用程序的初始内存消耗 应该在25MB左右),只需使用空应用程序的 下拉菜单,观察内存消耗在短时间内显著增长Xcode Cocoa框架中是否存在内存泄漏?还是我遗漏了什么? 要重现此问题,只需创建Cocoa应用程序,请选择 Swift或Objective-C(我已经测试了两者)都可以运行该项目,xcode,macos,memory-leaks,Xcode,Macos,Memory Leaks,打开调试导航器(应用程序的初始内存消耗 应该在25MB左右),只需使用空应用程序的 下拉菜单,观察内存消耗在短时间内显著增长 然后从Xcode OpenInstruments中的opendeveloper工具,在 选择分析模板选择泄漏并选择您的应用程序作为 单击目标,然后单击记录按钮 现在只需玩你的应用程序,调整窗口大小,打开下拉列表 菜单。几分钟后,您会注意到内存消耗将减少 上升到110MB以上,如果单击,您将注意到泄漏点 应用程序的内存泄漏将继续增加,直到系统内存不足。 暂停,然后单击检测
Instruments
中的opendeveloper工具
,在
选择分析模板
选择泄漏
并选择您的应用程序作为
单击目标,然后单击记录按钮_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:]
这是已知的bug吗?我还没有接触过Xcode生成的代码。AppKit或Cocoa框架中是否存在内存泄漏,或者两者都存在?还是我做错了什么?内存大小将因(4)而增长–菜单等对象在首次使用之前可能无法分配,但这种增长不会是无限的 无法复制您的结果:在10.13.2和Xcode 9.2下运行时,未发现无限制增长,也未报告泄漏
这并不是说你没有看到它,只是原因不明,但不太可能是框架本身的“漏洞”。尝试另一台机器,检查您的设置,等等。感谢您花时间实际尝试,看看是否真的有问题。购买所有对象分配后的方式,内存消耗不应超过某一点,在这种情况下确实如此。