2013-10-19 3 views
0

Windows Phone 8 응용 프로그램에서 내 코드 일부가 System.OutOfMemoryException을 호출하는 문제가 발생했습니다. 사용 가능한 메모리를 조사하기 위해 Process.GetCurrentProcess();을 사용하려고했지만 System.Diagnostics 네임 스페이스에 존재하지 않는 것으로 보아서 찾을 수 없었습니다.Windows Phone 8에서 System.Diagnostics.Process는 어디에 있습니까?

내 유일한 옵션은 Windows API를 직접 호출하기 시작하는 것입니다 (가정 할 수도 있습니다). 현재 프로세스를 원했던 나의 진정한 이유는 내 응용 프로그램에 사용 가능한 총 메모리를 결정하는 데있었습니다.

도움을 주신 모든 분들께 감사드립니다.

편집 :

이 코드를

public async static Task<T> InvokeServiceAsync<T>(string BaseAddress, string Path, params object[] ParamArray) 
{ 
    HttpClient client = new HttpClient(); 
    client.BaseAddress = new Uri(BaseAddress); 
    HttpResponseMessage response = await client.GetAsync(string.Format("{0}{1}", Path, MvcUtilities.BuildWebApiRequest(ParamArray)));    
    response.EnsureSuccessStatusCode(); 
    T result = await response.Content.ReadAsAsync<T>(); //Out of memory exception 
    return result; 
} 

답변

1

아니, 전화 응용 프로그램을 시작할 수없는 프로세스도를 열거합니다. winapi 허점은 SDK 헤더, 인증 및 샌드 박스에 의해 강제로 닫힙니다. 사용 가능한 경우에도 코드가 OOM 조건에서 실행될 가능성은 거의 없습니다.

전화가 가상 메모리 요구 페이징 운영 체제를 실행합니다. OOM에서 복구하는 것은 매우 어렵습니다. 시도하는 데는 거의 요점이 없습니다. 할당량을 줄여야합니다.

+0

내 OutOfMemoryException을 복구하는 것이 아니라 내 앱의 개발자로서 내게 얼마나 많은 메모리를 사용할 수 있는지를 알기위한 것입니다. 나는 30-40MB의 메모리 만 사용했다. –

+1

기술적으로 가상 메모리 이외의 운영 리소스를 소모하여 예외가 발생할 수 있습니다. 게시 된 질문은 스택에 대한 힌트를 제공하지 않습니다. 적어도 스택 추적이 필요합니다. 다른 프로세스를 살펴보면 결코 힌트를주지 않을 것입니다. –

+0

예외에 대한 다른 이유가있을 수 있다는 것을 이해합니다.하지만 실제로 문제가 아닙니다. 하루가 끝날 때 현재 사용 가능한 메모리를 확인하는 방법이 분명히 있습니다. 어느 쪽이든 정확한 컨텍스트를 제공하기 위해 정확한 코드로 업데이트 할 것입니다. 추신 : 귀하의 의견을 감사드립니다! –

관련 문제