原创 Android內存分析工具(六):開源項目Emmagee

Emmagee的功能包括: 檢測被測應用佔用的CPU使用率和總體使用量 檢測被測應用的內存佔用量及百分比 檢測流量消耗 改項目的真正流弊之處還在於,它不是一種嵌入式工具,而是一個單獨的app。所以完全不依賴於開發環境。 Git

原创 I/O隨筆

BufferedInputStream的數據成員buf是一個位數組,默認爲2048字節。當讀取數據來源時,例如文件,BufferedInputStream會盡量將buf填滿。當使用read()方法時,實際上是先讀取buf中的數據

原创 MAC 下終端打開app

比如我要打開一個, A.app 並用它打開文件 b.txt : open -a A b.txt

原创 Android內存分析工具(五):APT

上圖:通過APT實時監測android應用的內存和CPU使用情況

原创 shallow heap例說

public class Person{ String name; int age; public Person(String a, int b){ name = a;

原创 JVM內存

首先我們來了解JVM specification中的JVM:          主要包括兩個子系統和兩個組件: Class loader(類裝載器) 子系統,Execution engine(執行引擎) 子系統;Run

原创 Java GC、新生代、老年代

堆大小 = 新生代 + 老年代。默認下,新生代 ( Young ) = 1/3 的堆空間大小,老年代 ( Old ) = 2/3 的堆空間大小; 新生代 ( Young ) 被細分爲 Eden 和 兩個 Survivor 區域,

原创 線程隨筆

每次線程調用變量時是直接取自己的工作存儲器中的值還是先從主存儲器複製再取是沒有保證的; 線程改變變量的值之後,是否馬上寫回到主存儲器上也是不可保證的; 當線程進入或者離開同步代碼塊時會將私有拷貝與共享內存中的原始值進行比較; 線

原创 Android內存分析工具(四):adb命令

1.adb shell dumpsys meminfo yourpakagename Pss對應的TOTAL值:內存所實際佔用的值。 Dalvik Heap Size:從RuntimetotalMemory()獲得,DalvikHeap

原创 疫苗:HashMap的死循環

在淘寶內網裏看到同事發了貼說了一個CPU被100%的線上故障,並且這個事發生了很多次,原因是在Java語言在併發情況下使用HashMap造成Race Condition,從而導致死循環。這個事情我4、5年前也經歷過,本來覺得沒什麼好寫

原创 內存概念隨筆

當需要加載類的時候,相應的class loader會首先把請求委派給父class loader,只有當父class loader加載失敗後,該class loader纔會自己定義並加載類,這就是Java自己的“雙親委派加載鏈”結

原创 Volatile

int a = 10; int c = a; 理論上來講每次使用a的時候都應該從a的地址來讀取變量值,但是這存在一個效率問題,就是每次使用a都要去內存中取變量值,然後再通過系統總線傳到CPU處理,這樣開銷會很大。所以那些編譯器優化

原创 Android內存分析工具(二):DDMS

上圖爲 DDMS中的標籤Heap,講解如下: 打開DDMS界面,在左側面板中選擇你要觀察的應用程序進程,然後點擊Update Heap按鈕,接着在右側面板中點擊Heap標籤,之後不停地點擊Cause GC按鈕來實時地觀察應

原创 Android內存分析工具(一):Memory Monitor

Memory Monitor 是android studio 提供的性能分析工具, 可以通過視圖直觀的看到android應用的內存,CPU佔用情況。 Memory Monitor可以反映出當前操作帶來的CPU和內存變化。

原创 單例模式、雙檢測鎖定DCL、volatile(轉)

單例模式最要關心的則是對象創建的次數以及何時被創建。 Singleton模式可以是很簡單的,它的全部只需要一個類就可以完成(看看這章可憐的UML圖)。但是如果在“對象創建的次數以及何時被創建”這兩點上較真起來,Singleton模