2013-08-23 93 views
0

我正在開發一個有很多高分辨率圖形的應用程序。它在我的平板電腦上正常工作。但是,當我在智能手機上運行它時,會發現內存異常。如果我拿出一些圖形,它可以正常工作。有沒有辦法看到Android上有多少內存空閒?

有沒有辦法來檢測我有多少內存?如果內存不足,我會知道不使用所有的圖形。

+0

在這裏必須有一個bazillion的問題涵蓋所有這個話題,我只是檢查 - 27,143,212。完全可以編寫代碼在手機上顯示與平板電腦上相同的圖形。事實上,這是錯誤的措施,因爲沒有人說平板電腦比手機,GPU或其他任何東西都擁有更多的內存。因此,您所加載的內容的分辨率非常重要 - 但是,我的手機的分辨率高於平板電腦的分辨率。 – Simon

回答

0

設備RAM並不重要。您的流程的可用內存很重要。

要找出您的應用程序的內存類,請在ActivityManager上調用getMemoryClass() - 基本上以MB爲單位返回您的進程的可用內存量。

0

看一看你的logcat的,就說明你在某些點上,多少內存是免費的(只應用一個過濾器,所以你剛纔得到的消息,這適用於應用)

0

方法下面寫內存統計登錄:

private static void dumpMemoryStateToLog() { 
     double heapSize = Runtime.getRuntime().totalMemory(); 
     double heapRemaining = Runtime.getRuntime().freeMemory(); 
     double nativeUsage = Debug.getNativeHeapAllocatedSize(); 
     long maxMemory = Runtime.getRuntime().maxMemory(); 
     double heapUsage = heapSize - heapRemaining; 
     double usedMemoryRatio = (heapUsage + nativeUsage)/maxMemory; 
     String msgFormat = "Memory state: max: %,d, heap: %,d, native usage: %,d, used memory: %,d%%"; 
     int usedMemoryInPercents = (int) (usedMemoryRatio * 100); 
     Log.d(LOG_TAG, String.format(msgFormat, maxMemory, (int) heapUsage, (int) nativeUsage, usedMemoryInPercents)); 
    } 
相關問題