[apple] 활동 모니터는 “보낸 메시지”및 “수신 된 메시지”열을 통해 어떤 종류의 “메시지”를 추적합니까?

OS X의 활동 모니터에서 프로세스 목록보기에 추가 열을 추가 할 수 있습니다. 해당 목록에서 사용 가능한 두 개의 열은 “보낸 메시지”및 “수신 된 메시지”이며 각각 “보낸 메시지”및 “Rcvd 메시지”로 표시됩니다. 증거:

"보낸 메시지"및 "Rcvd 메시지"열을 표시하는 활동 모니터 부분

Activity Monitor는 어떤 종류의 “메시지”를 나타 냅니까?

“메시지”를 보았을 때, 처음에 Objective-C “메시지”와 함께 발송되었다고 생각 objc_msgSend()했지만, 이러한 메시지의 대부분은 프로세스 자체에 포함되므로 운영 체제에서 메시지를 추적하는 방법을 볼 수 없습니다. . 디버거가 연결되면 이러한 종류의 메시지를 추적 할 수 있지만 OS가 항상 그렇게하는 것을 볼 수는 없습니다-매우 높은 오버 헤드.

그래서 나는 그것들이 더 무거운 메시지라고 생각합니다. 프로세스 간 RPC 형태입니까? 아니면 이러한 메시지가 사용자 영역에서 커널로 호출됩니까? 확실한 참조를 찾고 있습니다. 감사합니다.



답변

이 숫자는 Mach 메시지의 입 / 출력 수와 일치하므로 objc_msgSend 수로 해석하지 않는 것이 올바른 것 같습니다.

계측기 (무료로 다운로드 할 수있는 Xcode 도구 세트 의 일부 )를 시작하고 특정 응용 프로그램을 파헤쳐 어떤 메시지가 언제 전송되는지 확인할 수 있습니다.

Xcode Instruments 스크린 샷

ObjC와 관련된 할당뿐만 아니라 모든 할당을 필터링 할 수 있으며 메시지 전송 횟수보다 훨씬 낮은 수준의 세부 정보를 파헤칠 수 있습니다. Xcode의 일부인 정식 문서는 이러한 통계와 활동 모니터와의 관계를 이해하는 데 도움이됩니다.

특히, 검색 NSObjCMessageLoggingEnabledobjc_msgSend맥 OS X 디버깅 마법에 – 도구를 참조 문서의 가이드 부분을 objC 카운트에서 얻을 수 있습니다.

mach messageXcode에서 검색 하여 커널 프로그래밍 안내서 의 IPC / 메시지 큐 섹션에서 자세한 메시지 큐 세부 사항 및 구성 요소를 찾으십시오 . 예상 한대로 훨씬 낮은 수준의 IPC 커널 트래픽입니다.

아마 developer.apple.com에서도 찾을 수 있지만 Xcode 내에서 로컬로 문서를 보유하면 많은 장점이 있습니다.


답변