0

在MSVS 2015中工作,它是一個C++ windows phone 8.1項目。什麼是在運行時確定Windows Phone 8.1應用允許/可用多少內存的好方法?

我陪審團操縱了一種可行的方法 - 我通過分配和釋放內存來做二進制搜索;如果分配工作,我增加規模,如果它不減少,等等。但是,重複分配和釋放似乎笨重,不雅,並可能導致其實際我不知道的具體問題,稱之爲直覺。

例如,當在512 MB手機模擬器上測試時,我最終發現我實際上只有160 MB的附近才能使用我的應用程序。這很好,但是我不知道我可以分配的實際內存量沒有經過測試。

我有哪些選擇可以找到該數字(使用可用的apis)?

+0

你讀過https://msdn.microsoft.com/en-us/library/windows/apps/jj681682(v=vs.105).aspx –

+0

我還沒有!這當然非常重要。 – MNagy

回答

0

ITNOA

正如你可以看到App memory limits for Windows Phone 8,你可以找到關於內存限制的Windows應用程序的一些信息。

enter image description here

正如你可以看到一些workaround about memory statistics您可以在C#

private void buttonGetMemoryMetrics_Click(object sender, RoutedEventArgs e) 
        { 
            
            long totalBytes = DeviceStatus.DeviceTotalMemory; 
            long usageLimit = DeviceStatus.ApplicationMemoryUsageLimit; 
            long currentUsage = DeviceStatus.ApplicationCurrentMemoryUsage; 
            ulong commitLimit = MemoryManager.ProcessCommittedLimit; 
            ulong currentCommit = MemoryManager.ProcessCommittedBytes; 
  
            long workingsetLimit = 0; 
            object temp; 
            if(DeviceExtendedProperties.TryGetValue("ApplicationWorkingSetLimit", out temp)) 
                workingsetLimit = (long)temp; 
  
  
            textBlockApplicationCurrentMemoryUsage.Text = currentUsage.ToString(); 
            textBlockApplicationMemoryUsageLimit.Text = usageLimit.ToString(); 
            textBlockApplicationWorkingSetLimit.Text = workingsetLimit.ToString(); 
            textBlockBytesCommitLimit.Text = commitLimit.ToString(); 
            textBlockBytesCommitted.Text = currentCommit.ToString(); 
            textBlockDeviceTotalMemory.Text = totalBytes.ToString(); 
            
        } 

如下使用一些API對於C++使用情況,您可以看到MemoryManager.AppMemoryUsageLimit。您可以在MemoryManager部分找到有關API的一些有用信息。

相關問題