2009-06-27 4 views
1

방금 ​​누출 프로젝트를 끝내었지만 "GeneralBlock-0"카테고리 아래에 수천 개의 개체가 있습니다. 실제 할당의 수는 지붕을 통과하며 (내가 입력 할 때 백만 분의 1에 가까워짐) 그 중 어느 것도 누수가 아니며 0 바이트보다 큰 크기는 없습니다.새로운 0 크기의 객체가 수천 개씩 매 초마다 추가됩니다. 걱정해야합니까?

UPDATE & 편집 :

QuartzCore는 잘못된 객체의 모든 책임이 있습니다. 디바이스에서 실행시

-[CALayer setPosition:] 
x_hash_table_new_ // x2 
hash_table_modify 
-[CALayer setPosition:] // x9 
-[CALayer(CALayerPrivate)_copyRenderLayer:flags:] //x13 

, 48 바이트 크기의 오브젝트와 GeneralBlock-64, 128, 256 등 따라 할당된다 :

책임있는 발신자는 게임 루프의 반복마다 실행 순서 (아르

topRow.center = CGPointMake(topRow.center.x,topRow.center.y-PIXELS_PER_FRAME); 
while (nextRow = thisTopRow.below) { //stops running when thisTopRow.below is nil 
    nextRow.center = CGPointMake(nextRow.center.x,nextRow.center.y-PIXELS_PER_FRAME);  
    if (nextRow.center.y+20 < 401 && !nextRow.userInteractionEnabled) 
     [nextRow enableInteraction];   
    thisTopRow = nextRow; 
} 

I w :.. 그것은 분명이 문제가 추적됩니다 내 프로젝트에서 어떤 코드는 크게 둔화 가 발생하기 때문에 전술 한 바와 같이 이러한 동일한 속성이 받아 들일 수 CGPoint가 유형이라는 인상하에 코드 블록이 끝날 때 할당이 취소됩니다. 왜 내 추억을 불러 일으키는거야? 그것이 내려지면, 내가 관심있는 사람들을 위해 악기에서 저장 한 추적 파일을 업로드 하겠지만, 나는 모든 것을 다 커버했다고 확신한다.

+0

이 문제는 iTennis에서 iCodeBlog.com에 의해 발생합니다. 모든 것은 UIImageView의 위치를 ​​변경하는 것을 가리 킵니다. 가운데 또는 프레임을 변경하여. – Tozar

답변

1

시뮬레이터에서 동작을 복제 할 수 있다고 가정하면 터미널에서 'top -u'를 사용하여 응용 프로그램의 RSIZE가 증가하지 않는지 확인하십시오.

이것은 QuartzCore가 자체 할당 자와 할당 영역을 구현했지만 Instruments가 사용하는 통계 수집 메커니즘에 완전히 얽혀 있지 않기 때문에 발생했을 가능성이 큽니다.

버그를 신고 해주세요.

+0

당신은 저를 잃어 버렸습니다 ... 당신이 평신도의 관점에서 나에게 말해 주려고하는 것을 설명 할 수 있습니까? – Tozar

+0

'top' 명령은 프로세스에 대한 정보를 표시합니다. Bill은 Terminal에서 top을 실행하고 응용 프로그램의 RSIZE (상주 메모리 크기) 동작을 관찰 할 것을 제안합니다. 그는 Instruments가 "일반"Objective-C 객체의 기본값보다 다른 영역 (메모리 영역)에 할당 될 수있는 QuartzCore 메모리를 모니터링하지 않을 것이라고 제안합니다. 근본적으로 인스 트루먼 트가 막대한 누수가 있다고 말하면, RSIZE가 안정적이라는 것을'top'이 보여 준다면, Instrument는 QuartCore 메모리에 대한 올바른 통계를 얻지 못하기 때문에 잘못되었습니다.그렇다면 버그를 신고하십시오 - http://bugreport.apple.com –

0

같은 문제도 ... 시뮬레이터에는 0 바이트가 할당되지만 CALayer의 각 메소드 호출에 대한 디바이스에서는 48 바이트로 메모리를 늘립니다.

이로 인해 메모리 문제가 발생합니다.

무랄 리.

+0

예, 당신과 niv에서 동일한 문제가 발생했습니다. 나는 UIImageView의 모든 인스턴스에 대해 장치에서만 48 바이트 할당 비용을 받고 있지만 UIScrollView를 사용하지는 않습니다. 또한이 게시물에서 질문에 대한 답변을 제공하지 않을 때 답변을 게시했음을 기억하십시오. 앞으로는 질문 아래에있는 "의견 추가"버튼을 사용하여 의견을 말하고 솔루션에 대한 "답변"섹션을 예약하십시오. – Tozar

0

이 문제도 다루고 있습니다. 내부의 UIImageViews와 함께 UIScrollView를 사용하고 있으며 스크롤 뷰의 오프셋 변경이있을 때마다 - [CALayer (CALayerPrivate) _copyRenderLayer : flags :] 호출이 48 바이트 씩 메모리를 늘립니다.

다시 시뮬레이터에서이 코드는 0 바이트로 기록되지만 내 장치에서는 끊임없이 내 메모리를 먹고 있습니다.

+0

이것은 또한 나에게 떠오르는 문제이기도합니다. Murali의 게시물에 대한 의견을 참조하십시오. 새로운 사용자로서 그것은 당신이 읽을 필요가있는 것입니다. – Tozar

관련 문제