1. 程式人生 > >Android中如何檢視記憶體(下)

Android中如何檢視記憶體(下)

例項1

    int cnt=0;

    final static int kBufferMinSize=1000;

    final static int kBufferMaxSize=2000;

    StringBuffer strBuffer=new StringBuffer(kBufferMinSize);

    StringBuffer strBuffer2=new StringBuffer(kBufferMinSize);

    StringBuffer strBuffer3=new StringBuffer(kBufferMinSize);

    StringBuffer strBufferNativePss=new StringBuffer(kBufferMinSize);

    StringBuffer strBufferDalvikPss=new StringBuffer(kBufferMinSize);

    StringBuffer strBufferOtherPss=new StringBuffer(kBufferMinSize);

    Debug.MemoryInfo memoryInfo=new Debug.MemoryInfo();

    final static String tag="robin";

void printMemory()

    {

    long totalMemory=Runtime.getRuntime().totalMemory();

          long freeMemory=Runtime.getRuntime().freeMemory();

          long usedMemory=(totalMemory-freeMemory)>>10;

          totalMemory=totalMemory>>10;

          freeMemory=freeMemory>>10;

          if(strBuffer.length()>kBufferMaxSize)

          {

                strBuffer.delete(0,strBuffer.length());

                strBuffer2.delete(0,strBuffer2.length());

                strBuffer3.delete(0,strBuffer3.length());

                strBufferNativePss.delete(0,strBufferNativePss.length());

                strBufferDalvikPss.delete(0,strBufferDalvikPss.length());

          }

          strBuffer.append(usedMemory+",");

          strBuffer2.append(totalMemory+",");

          strBuffer3.append((Debug.getNativeHeapSize()>>10)+",");

          Debug.getMemoryInfo(memoryInfo);

          strBufferNativePss.append((memoryInfo.nativePss)+",");

          strBufferDalvikPss.append((memoryInfo.dalvikPss)+",");

          if(cnt++%10==0)

          {

                Log.i(tag,"usedMemory:"+strBuffer.toString());

                Log.i(tag,"totalMemory:"+strBuffer2.toString());

                Log.i(tag,"NativeHeapSize:"+strBuffer3.toString());

                Log.i(tag,"Native PSS:"+strBufferNativePss.toString());

                Log.i(tag,"Dalvik PSS:"+strBufferDalvikPss.toString());

          }    

    }

注意,對於輸出的記憶體資訊日誌,我們稍作編輯就可以用於在excel產中圖表,比便更直觀的進行分析

相關推薦

Android 檢視記憶體的使用情況集常用adb命令

1. 在IDE中檢視Log資訊 當程式執行垃圾回收的時候,會列印一條Log資訊,其格式如下: D/dalvikvm: <GC_Reason> <Amount_freed>, <Heap_stats>, <External_memor

Android如何檢視記憶體()

例項1     int cnt=0;     final static int kBufferMinSize=1000;     final static int kBufferMaxSi

linux 檢視記憶體使用情況

用 'top -i' 看看有多少程序處於 Running 狀態,可能系統存在記憶體或 I/O 瓶頸,用 free 看看系統記憶體使用情況,swap 是否被佔用很多,用 iostat 看看 I/O 負載情況... 還有一種辦法是 ps -ef | sort -k7 ,將程序按

隱藏androidEditText的劃線

有的時候需要隱藏掉EditText的邊框和下劃線,程式碼為: 主要是這一欄: android:background="@null" <EditText style="

AndroidDropEditText帶拉功能的EditText

https://gitee.com/afei_/MyEditText 一 、特點 1.簡單。只有100多行的類,無任何依賴,也沒有自定義屬性 2.沒有用到組合控制元件的實現方法,少了很多佈局檔案等一系列東西 3.點選下拉圖示時隱藏軟鍵盤並彈出popWindow,點選item顯示對應項

LeakCanary——直白的展現Android記憶體洩露

之前碰到的OOM問題,終於很直白的呈現在我的眼前:我嘗試了MAT,但是發現不怎麼會用。直到今天終於發現了這個新工具: 當我們的App中存在記憶體洩露時會在通知欄彈出通知: 當點選該通知時,會跳轉到具體的頁面,展示出Leak的引用路徑,如下圖所示: LeakCanary

linux檢視目錄隱藏檔案方式?

Linux系統中,除了儲存了大量可見的檔案和資料夾,還附帶了很多隱藏的檔案和資料夾,那麼該如何進行檢視?這些隱藏檔案又有什麼用呢?檢視Linux主目錄隱藏檔案可以通過執行ls–a來實現,對於隱藏檔案,不建議進行更改和刪除操作,原因是,主目錄中的隱藏檔案和目錄包括使用者程式訪問

Android檢視當前Activity是否銷燬

進入到Android-sdk中platform-tools目錄 在命令列中執行以下命令 adb shell dumpsys activity>activity.txt 可以將當前的四大元件(Activity,Service,BroadCase,ContentProvider)的存在情況列印到當前目錄的

vs2010檢視記憶體和暫存器

今天講一下如何從VS2010中檢視記憶體和暫存器狀態,一般來講,只要從事C/C++程式設計的人,基本上對於這篇文章完全可以略過了,但寫這篇文章的初衷在於,自己也是從這一步中過來的,記得當年自己其實也不知道如何快速使用VS中各種工具,導致花了很多時間在查詢資料上面。所以,本文基本上可以說是面向菜鳥級選

Android系統檢視記憶體情況的命令

1 procrank [email protected]:/ # procrank procrank PID Vss Rss Pss Uss cmdline 121 149692K 10

談談android記憶體洩漏

寫在前面 記憶體洩漏實際上很多時候,對於開發者來說不容易引起重視。因為相對於crash來說,android中一兩個地方發生記憶體洩漏的時候,對於整體沒有特別嚴重的影響。但是我想說的是,當記憶體洩漏多的時候,很容易造成他OOM的,因為android給每個app的

android解決記憶體洩露問題

首先需要記憶體分享,這個就先借鑑別人的部落格來了。 Eclipse Memory Analysis Tools (MAT) 使用 然後進入主題,開始對某個類出現記憶體洩露問題進行解決。 public class AView{ Bitmap mBitmap; XO

Linux記憶體 Buffer和Cache的區別及Linux檢視記憶體的命令free

一. Linux中檢視記憶體的命令free (1) free檢視的內在預設是以kb為單位,如果想以MB為單位檢視用命令 free -m     二.Linux記憶體 Buffer和Cache的區別 A buffer is something that has ye

基於Kotlin解決AndroidHandler記憶體洩漏問題

作為Android開發者,我們都知道,當我們在子執行緒處理完耗時任務後重新整理UI時,一般會藉助於 Handler 來實現。關於handler具體用法這裡不做說明了,在使用 Handler 時一般會遇到記憶體洩漏的隱患,同時編譯器也會給出一大片黃色的警告,在兩者

linux檢視記憶體和cpu資訊

linux檢視虛擬記憶體和CPU佔用率主要有以下命令: top free cat /proc/meminfo cat /proc/cpuinfo [[email protected] proc]# dmidecode |grep -A16 "Memory Dev

關於Android記憶體洩漏之非同步操作

Android中記憶體洩漏是比較讓人頭痛的一塊問題,這兩天研究了下,放點乾貨吧,有時間再好好解析。 首先是如何檢查記憶體洩漏,這裡推薦使用square的leakCanary,絕對的神器。Github地址: 然後是一個自己寫的Demo,裡面有用到leakCanary進行記憶

Android procrank檢視記憶體使用情況

 使用adb shell procrank 手機中的sh是經過精簡過的,有些手機可能沒有 procrank 命令,可以使用genymotion模擬器,或是自己安裝procrank命令。使用procra

Android引起記憶體洩露的原因分析

昨天晚上,通過Android Studio的記憶體分析工具Android Monitor分析到我寫的一個照片選擇類出現了記憶體洩露,還挺嚴重的。雖沒造成oom 之類的crash,但是身為一個有程式碼潔癖症的程式設計師,並且一直對記憶體洩露頗有研究的我,我決定還是要找到出現記

android自定義拉框

android自帶的下拉框好用不?我覺得有時候好用,有時候難有,專案規定這樣的效果,自帶的控制元件實現不了,那麼只有我們自己來老老實實滴寫一個新的了,其實最基本的下拉框就像一些資料填寫時,點選的時候出現在編輯框的下面,然後又很多選項的下拉框,可是我在網上找了一下,沒有這種下

Android記憶體洩漏和記憶體溢位問題

記憶體洩漏簡單地說就是申請了一塊記憶體空間,使用完畢後沒有釋放掉。它的一般表現方式是程式執行時間越長,佔用記憶體越多,最終用盡全部記憶體,整個系統崩潰。由程式申請的一塊記憶體,且沒有任何一個指標指向它,那麼這塊記憶體就洩露了。 從使用者使用程式的