2013-10-19 46 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

我的确了解可能还有其他的例外原因,但这并不是真正的问题,在一天结束时肯定有一些方法可以确定当前可用的内存吗?无论哪种方式,我会更新确切的代码,以提供更好的上下文。 PS:欣赏你的输入! –