Windows Phone 72011. 12. 2. 15:47

Microsoft.Phone.dll에 포함되어 있는 Microsoft.Phone.Info.DeviceExtendedProperties 클래스를 통해
 
long totalBytes = (long)Microsoft.Phone.Info.DeviceExtendedProperties.GetValue(“DeviceTotalMemory”);
 
이런 식으로 얻을 수 있습니다.
 
GetValue에 parameter로 전달할 수 있는 이름은 아래와 같습니다.
 
DeviceTotalMemory – 윈도우폰 전체 메모리
ApplicationCurrentMemoryUsage – 앱의 현재 메모리 사용량
ApplicationPeakMemoryUsage – 앱의 최고 메모리 사용량
 
 
메모리 사용량을 간단히 표시할 수 있는 MemoryUsageBox 컨트롤
 
이것을 간단하게 사용들 하시라고 오늘 HugeFlow.Phone 라이브러리에
메모리 사용량을 표시해주는 컨트롤을 추가하였습니다.
이름하야 MemoryUsageBox란 컨트롤입니다.
 
일반적으로는 메모리 사용량을 보고 싶은 페이지에 아래와 같은 형태로 추가하시면 끝.
 
// Constructor
public DetailsPage()
{
    InitializeComponent();
 
#if DEBUG
    LayoutRoot.Children.Add(new MemoryUsageBox());
#endif
}

Posted by 동동(이재동)
iPhone App2011. 9. 7. 14:30

이오류는 거의 메모리 오류다 일단 나는 2번 dealloc부터 해제 하니깐 메모리 에러를 잡았다.

1. 디버깅 스택을 확인해서 오류난 지점을 찾아라

- 사용자 코드가 나타나지 않을때는 dealloc 확인(네이게이션 컨트롤러에서 팝업될때 많이 발생)

2. dealloc 부터 디버깅해라 !!!

- nil 이 아니고 할당되지 않은 인스턴스에 release 메시지를 날리면 EXC_BAD_ACCESS

3. 부모 컨트롤러에서 값을 받아올때는 retain 하라 !!

- retain 안하면 그냥 주소값만 가져와서 부모에서 release 해버리면 잘못된 접근이 된다.

- 맘편히 프로퍼티로 할당하면 하자. self.param = input_param; 하면 내부적으로 기존것 release, 새것 retain 한다.

4. NSZombiesEnabled 를 활용하자

Posted by 동동(이재동)
iPhone App2011. 7. 27. 11:35

일단 xcode 4를 위주로 설명하겠다.

지금까지 메모리 관리가 엉망이었다. 메모리 관리를 철저하게 하지 안흐면

계속 사용할때마다 메모리를 먹기때문에 나중에 문제가 생긴다.

그래서 코딩후 항상 체크하는 습관을 가지면 좋다.

일단 prouct의 profile을 클릭한다 단축키가 더 편하다 커맨드+I

201107271128.jpg  

Leaks를 선택한다.

그러면 시뮬레이터가 뜨고 막 이리저리 사용해본다.


201107271132.jpg

그러면 이렇게 뜨는데 snapshot interval이 기본은 10으로 되어있는데 좀더 세밀하게 관찰하기 위해서 좀더 줄인다 나는 5정도로 했다.

그리고 leaks를 클릭 해서 보면 저렇게 메모리 관련 오류가 나온다 그쪽에서 responsible Library를 클릭하면 프로젝트 별로 죽 뜨는데

그쪽에서 현재 자기가 진행하는 프로젝트 이름만 보면 된다.

그뒤 더블 클릭하면 오류가 난 코드가 있는쪽으로 바로간다. 그쪽에서 혹시 메모리관리를 잘못했는지 확인해보자.

Posted by 동동(이재동)