Androidのパフォーマンスの最適化の基本---

0から4GBのプロセスのアドレス空間以下のように、図は次のとおりです。
Androidのパフォーマンスの最適化の基本---

関数、関数パラメータ、ローカル変数、等の主記憶アドレスが、それは大きな空間スタックサイズは一般的に数MBを必要としない前記オペレーティング・システムにより制御スタック領域(プッシュおよびポップ)。
ヒープスペースは、プログラマを使用することによって制御され、プログラマは、このアドレス空間のような操作を削除し、自由、新しい、関数呼び出しのmalloc関数を使用することができます。スペースは、いくつかのGBに比較的大きな、典型的には数百MBあるので、メモリ空間を提供するという複雑なタスクを完了するためのプログラムのヒープ。
Androidのプロセス:
天然のプロセス(1):C / C ++インプリメンテーションを使用して、プロセスは、LinuxのDalvik例を含まない、/システム/ bin /ディレクトリの動作プログラムファイルは、プロセスのネイティブな形態で存在します。/システム/ binに/ SurfaceFlingerの、/システム/ binに/ rild、procrank ので、ネイティブプロセスです。
(2)Javaプロセス:のDalvikインスタンス化された仮想マシンインスタンスLinuxプロセスは、主な機能の登録処理は、Javaの関数です。Dalvik仮想マシンインスタンスを作成するプロセスLinuxプロセスフォーク()システムコールをホストしているので、アンドロイドのそれぞれにJavaプロセスは、実際にはLinuxプロセスであるが、プロセスもう一つのDalvik仮想マシンインスタンス。そのため、メモリ割り当てプロセスは、ネイティブJavaプロセスよりも複雑です。3、Androidアプリケーションシステムは、基本的なランチャー、InCallUI、連絡先などのJavaプロセス、ある、SystemUIが好きです。

Javaのプロセス構造:
Androidのパフォーマンスの最適化の基本---

VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
注意:dumpsys meminfo可以查看native进程和java进程,而procrank只能查看java进程。
PSS(Proportional Set Size),表示进程实际使用的物理内存,是由私有内存加上按比例分担计算的各进程共享内存得到的值。例如,如果有三个进程都使用了一个消耗30K内存的so库,那么每个进程在计算这部分PSS值的时候,只会计算10K。总的计算公式是:
Dalvik PSS内存 = 私有内存Private Dirty + (共享内存Shared Dirty / 共享的进程数)
从实际含义来讲,Private Dirty部分存放的是应用new出来的对象实例,是每个应用所独有的,不会再共享。Shared Dirty部分主要是zygote加载的Android框架部分,会被所有Android应用进程共享。通常进程数的值在10-50的范围内。
PSS是一个非常有用的数值,如果系统中所有的进程的PSS相加,所得和即为系统占用内存的总和。但要注意的是,进程的PSS并不代表进程结束后系统能够回收的内存大小。
1、 Native Heap
mallinfo是一个C库, mallinfo函数提供了各种各样的通过C的malloc()函数分配的内存的统计信息。
Naitve Heap Size: 从mallinfo usmblks获得,代表最大总共分配空间
Native Heap Alloc: 从mallinfo uorblks获得,总共分配空间
Native Heap Free: 从mallinfo fordblks获得,代表总共剩余空间
Native Heap Size 约等于Native Heap Alloc + Native Heap Free
native heap的增长并不受dalvik vm heapsize的限制。只要RAM有剩余空间,可以一直在native heap上申请空间。

2、 Dalvik Heap
和Java Heap概念相同,指java代码申请的内存。统计/dev/ashmem/dalvik-heap和/dev/ashmem/dalvik-zygote占用内存。

3、 Dalvik Other
其它以/dev/ashmem/dalvik-开头的内存区域归为Dalvik Other。

4、 Stack
由操作系统控制,其中主要存储函数地址、函数参数、局部变量等等,所以Stack空间不需要很大,一般为几MB大小。

5、 Ashmem
Ashmem对应所有/dev/ashmem/下不以dalvik-开头的内存区域

6、 Other dev
Other dev对应的是以/dev下其他的内存区域。

7、のmmap
いくつかの拡張の既知の分類でのmmapファイルには、残りは他のmmapに分類しました。分割の.soのmmap、の.apkのmmap、の.ttfのmmap 、.dexのmmap、.oatのmmap、.artのmmap、他のmmap。 大きなファイルはDEXようデックス・アプリケーションは、大きなスペースを占有し、コードの増加となりますメモリの量が増加します。(コードを減少させるために相当)減少DEXは、メモリのDalvik部分を低減しつつ、このメモリフットプリントのサイズを小さくすることができます。

。8、mtrack GL
GL GL報告mtrack IS-ドライバーのメモリ使用量。これは、主にサイズテクスチャGL、GLコマンドバッファ、RAM固定のグローバルドライバのオーバーヘッドなどの合計をAPOS
GL GL mtrackドライバレポートのメモリ使用量。主GLテクスチャサイズ、GLコマンドバッファ、固定のグローバルオーバーヘッドRAMドライブ等の合計。
9、不明
不明

メモリ解析ツール-showmap
1 |マンゴスチンルート@:/#のPS | grepをvideomeeting
u0_a60 7853 1708 1924376 134 956のSYS がepoll 7fa364781c com.xxxxxx.xxxx.videomeeting S
マンゴスチン@ルートを:/#SHOWMAP -a 7853

以下のリストは、唯一の大きなPSSアイテムを占め、多くのコンテンツを表示します:
Androidのパフォーマンスの最適化の基本---

おすすめ

転載: blog.51cto.com/14348552/2403181