- 이 문제를 재현하려면 간단하게 코코아 응용 프로그램을 만들고 Swift 또는 Objective-C (나는 둘 다 테스트했습니다)를 선택하십시오. 프로젝트를 실행하십시오.
열고
debug navigator
(앱의 초기 메모리 소비 이 25메가바이트 주위에 있어야한다), 단순히 메뉴 아래로 빈 응용 프로그램의 드롭 함께 놀러, 시간의 짧은 기간에 크게 성장하는 메모리 소비를 관찰합니다.Cocoa 프레임 워크에 메모리 누수가 있습니까? 또는 나는 무엇인가 놓치고 있냐?- 그런 다음
Choose a profiling template
에서,Instruments
개방 엑스 코드에서Open Developer Tool
에서이Leaks
를 선택하고 목표로 응용 프로그램을 선택하고 녹화 버튼을 클릭합니다. 이제 앱으로 재생하고 창의 크기를 조절하고 메뉴를 열어보세요. 몇 분 후에 메모리 사용량이 이상으로 증가하고 110MB 이상으로 올라가면 누출 점을 알 수 있습니다.
시스템의 메모리가 부족해질 때까지 계속 메모리 누출이 증가합니다.
- 일시 정지 한 후, 검출 누출 지점 (타임 라인에 빨간색 십자가)를 클릭, 당신은 아마 아래의 범인 중 일부 표시됩니다 목록이 너무 오래 그래서 몇 포함입니다
을, 하지만 모두 예외없이 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 프레임 워크에서 메모리 누수가 있습니까? 아니면 둘 다 가능합니까? 아니면 내가 잘못하고있는거야?
시간을내어 실제로 이것을 시도해 주셔서 감사합니다. 실제로 문제가 있는지 확인하십시오. – ilgaar
모든 객체가 할당 된 메모리를 소비 한 후에 구매하는 방법은 특정 시점 이상으로 올라가지 않아야합니다. – ilgaar