2017-12-17 5 views
0
  1. 이 문제를 재현하려면 간단하게 코코아 응용 프로그램을 만들고 Swift 또는 Objective-C (나는 둘 다 테스트했습니다)를 선택하십시오. 프로젝트를 실행하십시오.
  2. 열고 debug navigator (앱의 초기 메모리 소비 이 25메가바이트 주위에 있어야한다), 단순히 메뉴 아래로 빈 응용 프로그램의 드롭 함께 놀러, 시간의 짧은 기간에 크게 성장하는 메모리 소비를 관찰합니다.Cocoa 프레임 워크에 메모리 누수가 있습니까? 또는 나는 무엇인가 놓치고 있냐?

  3. 그런 다음 Choose a profiling template에서, Instruments 개방 엑스 코드에서 Open Developer Tool에서이 Leaks를 선택하고 목표로 응용 프로그램을 선택하고 녹화 버튼을 클릭합니다.

  4. 이제 앱으로 재생하고 창의 크기를 조절하고 메뉴를 열어보세요. 몇 분 후에 메모리 사용량이 이상으로 증가하고 110MB 이상으로 올라가면 누출 점을 알 수 있습니다.

  5. 시스템의 메모리가 부족해질 때까지 계속 메모리 누출이 증가합니다.

  6. 일시 정지 한 후, 검출 누출 지점 (타임 라인에 빨간색 십자가)를 클릭, 당신은 아마 아래의 범인 중 일부 표시됩니다 목록이 너무 오래 그래서 몇 포함입니다

을, 하지만 모두 예외없이 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 프레임 워크에서 메모리 누수가 있습니까? 아니면 둘 다 가능합니까? 아니면 내가 잘못하고있는거야?

답변

1

(4)로 인해 메모리 크기가 커질 수 있습니다. 처음 사용하기 전까지는 메뉴와 같은 객체가 할당되지 않을 수도 있지만, 이러한 증가는 제한되지 않습니다.

결과를 재현 할 수 없습니다 : 10.13.2 & & 실행 중 Xcode 9.2 무한대 증가가 보이지 않으며 누수가보고되지 않았습니다.

당신이 그것을 보지 않는다고 말하는 것은 아니지만 단지 그 원인이 알려지지 않았지만 프레임 워크에서 "누출"이 아닐 가능성이 희박합니다 그 자체가입니다. 다른 기기를 사용해 설정 등을 확인하십시오.

+0

시간을내어 실제로 이것을 시도해 주셔서 감사합니다. 실제로 문제가 있는지 확인하십시오. – ilgaar

+0

모든 객체가 할당 된 메모리를 소비 한 후에 구매하는 방법은 특정 시점 이상으로 올라가지 않아야합니다. – ilgaar

관련 문제