簡體   English   中英

dalvik-LinearAlloc,dalvik-aux-structure,dalvik-bitmap-1,dalvik-bitmap-2,dalvik-card-table,dalvik-mark-stack和dalvik-zygote中的數據是什么?

[英]What's the data in dalvik-LinearAlloc, dalvik-aux-structure, dalvik-bitmap-1, dalvik-bitmap-2, dalvik-card-table, dalvik-mark-stack and dalvik-zygote?

我在PID上使用showmap命令,我無法理解報告中的這一部分:

 16384     3752      689        0     3132        0      620    4 /dev/ashmem/dalvik-LinearAlloc (deleted)
  2460     1748      934        0      828        0      920   18 /dev/ashmem/dalvik-aux-structure (deleted)
  8192      572      572        0        0        0      572    1 /dev/ashmem/dalvik-bitmap-1 (deleted)
  8192        0        0        0        0        0        0    1 /dev/ashmem/dalvik-bitmap-2 (deleted)
  4100      312      312        0        0        0      312    1 /dev/ashmem/dalvik-card-table (deleted)
502140    14860    14860        0        0        0    14860    3 /dev/ashmem/dalvik-heap (deleted)
  1500      280      280        0        0        0      280    1 /dev/ashmem/dalvik-jit-code-cache (deleted)
174764        0        0        0        0        0        0    1 /dev/ashmem/dalvik-mark-stack (deleted)
 22148    22148     2141        0    20452        0     1696    1 /dev/ashmem/dalvik-zygote (deleted)

我想知道dalvik-LinearAlloc,dalvik-aux-structure,dalvik-bitmap-1,dalvik-bitmap-2,dalvik-card-table,dalvik-mark-stack和dalvik-zygote中的數據。

這些ashmem耗費了數百萬字節的內存,我想找到一種方法來縮小這些ashmem的大小。

showmap正在從一個進程中轉儲smap數據。 smap描述了進程的內存區域的細節。 在虛擬內存管理系統中,內存可以通過系統API獲得,如mmapbrk 通過這些API獲取虛擬內存地址后, 地址長度將記錄在smap中

讓我們列出dalvik相對內存使用情況的每個部分:

  • Dalvik Heap部分(堆管理,GC)
    • dalvik-bitmap-1,dalvik-bitmap-2是Dalvik Heap管理數據結構。 在Dalvik中,GC是標記的 ,並且8位字節的內存將被標記(使用或空閑)作為位圖中的一位。 這兩個位圖將用作活動映射(用於標記@運行時),另一個將用作標記映射(使用@ GC時間)。
    • dalvik-mark-stack:用於GC標記步驟使用。 標記步驟將迭代位圖,因此這是一個需要堆棧的廣度優先搜索。
    • dalvik-card-table:用於Dalvik Concurrent GC,在位圖標記步驟中,該過程將執行其他任務,這將導致使用內存。 這些卡表在第一個標記步驟后記錄臟記憶。 您可以通過搜索標記掃描GC來查看詳細信息。
    • dalvik-heap用於進程內存使用
    • dalvik-zygote是孔堆的一部分,不會用於@ GC。 所有進程都將共享這些內存,例如框架資源。
  • dalvik-jit是Dalvik中使用的jit內存。 JIT:及時,將dex字節碼轉換為可由CPU執行的機器碼。
  • dalvik-LinearAlloc:是dalvik的perm內存,例如:Method,Class definition datas,thread stack datas。 解析類定義后,可以READONLY設置這些內存。
  • dalvik-aux-structure:輔助數據結構,它將壓縮方法/類/字符串const引用。 這些引用將用於每個dex文件,但這些內存的總和將花費大量內存。 所以Dalvik創建了一個tmp內存來共享這些引用。

如果你想分析程序的內存,我建議你在eclipse中使用MAT。 和本機堆使用情況一樣,您可以使用mmap進行管理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM