什麼是 JNI:http://developer.android.com/intl/zh-tw/training/articles/perf-jni.html
http://87showmin.blogspot.tw/2009/06/java-java-native-interfacejni.html
memtrack: http://tech.uc.cn/?tag=memtrack
memtrack是系统提供的一个计算内存使用的hal,没有也没有关系的,不用在意。
网络状态发生变化的时候,系统会发出 android.net.conn.CONNECTIVITY_CHANGE .
该值详细描述如下:
public static final String CONNECTIVITY_ACTION
Since: API Level 1
A change in network connectivity has occurred.
A connection has either been established or lost.
The NetworkInfo for the affected network is sent as an extra;
it should be consulted to see what kind of connectivity event occurred.
If this is a connection that was the result of failing over from a disconnected network,
then the FAILOVER_CONNECTION boolean extra is set to true.
For a loss of connectivity,
if the connectivity manager is attempting to connect (or has already connected) to another network,
the NetworkInfo for the new network is also passed as an extra.
This lets any receivers of the broadcast know that they should not necessarily tell the user that no data traffic will be possible.
Instead, the reciever should expect another broadcast soon,
indicating either that the failover attempt succeeded (and so there is still overall data connectivity),
or that the failover attempt failed, meaning that all connectivity has been lost.
For a disconnect event, the boolean extra EXTRA_NO_CONNECTIVITY is set to true if there are no connected networks at all.
Constant Value: "android.net.conn.CONNECTIVITY_CHANGE"
/cache :http://www.linuxatemyram.com/
cache用於,Linux將暫時沒用到的記憶體,暫時作為硬碟的快取記憶體
/system
系統程式,只能讀取
/data 用於存短信用
eMMC:
DDMS(Dalvik Debug Monitor Service) 是 Android 開發中一個極為重要的 debug 工具,可以拿來查看模擬器上頭運行的 process、file system (sdcard) 等
http://ithelp.ithome.com.tw/question/10011817?tag=rt.rq
Dalvik是Google公司自己設計用於Android平台的虛擬機。
Dalvik虛擬機是Google等廠商合作開發的Android移動設備平台的核心組成部分之一。
它可以支持已轉換為
.dex(即Dalvik Executable)格式的Java應用程序的運行,
.dex格式是專為Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。
Dalvik Virtual Machine(Dalvik虛擬機器)是一種暫存器型態的虛擬機器。
簡稱DVM,DVM在撰寫開發時就已經設想用最少的記憶體資源來執行,
以及同時可執行多個VM為前提來開發的。
不過,上述的特性需要Linux作業系統的協助才能實現,例如程序問執行的控制、
多執行緒的支援、記憶體管理等。事實上不僅Dalvik虛擬機器如此,
Java虛擬機器也一樣有作業系統相依性,不同的作業系統需要不同的Java虛擬機器,
而虛擬機器會針對其支援的作業系統再進行各項調整,以便能最佳化執行。
Dalvik虛擬機器有許多地方是參考Java虛擬機器設計,
Dalvik虛擬機器所執行的中介碼並非是Java虛擬機器所執行的Java Bytecode,
同時也不直接執行Java的類別檔(Java Class File),而是執行一種特有的檔案格式,稱為.dex。
Java的類別檔要先透過一套叫dx的編譯工具轉換成.dex檔後,
才能讓Dalvik虛擬機器執行。而Delvik虛擬機器則改用Register Based的方式,
變數皆存放於暫存器中,相較之下Delvik虛擬機器的指令就會少一點,速度也就會再加快一點。
「牛油」效能(Project Butter),意思是可以讓Jelly Bean的體驗像「牛油般順滑」(鎖定提昇使用者頁面的速度與流暢性)。
http://www.hksilicon.com/articles/210091
TRIM 是什麼?
Trim-一個ATA指令,由操作系統發送給SSD主控制器,告訴它哪些數據占的地址是「無效」的。
當你在電腦里刪除一個文件的時候,操作系統並不會真正的去刪除它。
操作系統只是把這個文件的地址標記為「空」,讓它可以被再次使用,
這表示這個文件所佔的地址已經「無效」。但這會帶來一個問題,
硬盤並不知道操作系統已把這個地址標記為「空」了,機械盤的話是無所謂,
因為下次系統讓它在這個地址上面寫入數據的時候,可以直接在上面重新覆蓋寫入,
但是到了SSD上就出問題了。閃存需要先擦除才能再次寫入數據,要得到空閑的閃存空間,
SSD必須複製所有的「有效」頁到新的「空白塊」里,並擦除舊塊(垃圾回收)。
如果沒有Trim,那意味着SSD主控制器不會知道這個頁是「無效」的,
除非等到再次被操作系統要求覆蓋數據進去。
這樣就無法在最適當的時機做出最好的優化,
既影響垃圾回收的效率(間接影響性能),
又影響SSD的耐久度(就是很多人都相當關心的壽命)。
這裡要強調下,Trim只是條指令,
讓操作系統告訴SSD主控制器這個頁已經「無效」就算完了,
並沒有任何其它多餘的操作。
工作在Android 中的 TRIM
Linux 內核在 2.6.33 年代已經引入 TRIM,但不是所有 Linux 文件系統都原生支持 TRIM,
在 Android 廣泛使用的 ext4 是原生支持 TRIM 的。
而 Android 2.3 就已經設置 ext4 為默認的文件系統,
之前升級上來的 Android 可能還是使用 YAFFS2。
預裝 Android 4.0 或以上版本的手機或平板大多都是使用 ext4 了。
調用 TRIM 整理 NAND 上的碎片有兩種方法,一是掛載 ext4 分區時加上 discard 選項,
二是使用 fstrim 命令。Android 4.3 中的 TRIM 是用 fstrim 實現的,
但一般 Linux 發行版並不建議使用 fstrim 的方法,而是使用 mount ext4 分區時加上 discard 選項的辦法。
因為 discard 選項會在每一個磁盤操作時同時執行 TRIM 指令,所以可能會影響到刪除文件時的性能。
據介紹 Android 4.3 需要滿足下述條件,才會執行 fstrim。
設備未使用超過一個小時、過往24小時沒有空閑維護窗口事件、
電池剩餘電量不低於80%、設備正在充電且電量不低於30%。如果你習慣每天晚上插上充電,
fstrim會大概每24小時執行一次。Google 的做法是在各種傳感器達到條件后才出發 TRIM 指令。
對於非 Android 4.3 用戶,Google Play 商店上的一款 Lagfix 的軟件就可以讓非 Android 4.3 的設備使用 TRIM,
需要 Root。已經 Root 的手機,其實也可以直接修改 Android 的文件系統掛載表,
加上 discard 參數后重新開機即可,修改方法大致和 Linux 系統相同。
在ADB中執行以下命令就可以驗證fstrim是否工作了:
adb logcat -d | grep -i fstrim