原创 四、JVM系列(類加載機制)

前言 當編譯器把Java源代碼編譯成字節碼之後,虛擬機便可以把字節碼讀取進JVM內存,從而解析、運行等整個過程。最終執行得到我們想要的結果。這個過程我們叫做Java虛擬機的類加載機制。JVM執行class字節碼的過程分爲七個階段: 加載、驗

原创 六、JVM系列(垃圾回收器)

前言 前面文章我們介紹了JVM的內存結構、JVM的垃圾回收機制,那麼這篇文章我們來了解進行回收垃圾的垃圾回收器 串行回收器 使用單線程進行垃圾回收的回收器,每次回收只有一個線程。對於在併發能力弱的計算機上有更好的表現。 1、新生代串行回收器

原创 八、JVM系列(Java的四種引用類型)

1、強引用 把一個對象直接賦值給引用類型變量,則爲強引用。強引用的對象是不可以被GC回收的,因此在實際開發過程不可以隨意回收具有強引用的對象來解決內存不足問題。如果一個強引用的對象過大導致內存不足的時候,Java虛擬機則會拋出OutOfMe

原创 一、JVM系列(到底什麼是虛擬機?)

我們知道Windows系統上安裝的是後綴名爲.exe的軟件安裝包,Mac OX系統上安裝的軟件包後綴名是.dmg。我們把exe後綴名的安裝包放到Max OX系統上是無法安裝的,同樣把dmg後綴名的安裝包放到Windows系統上也無法安裝。

原创 二、JVM系列(從源代碼到機器碼,發生了什麼?)

前端編譯器:源碼到字節碼 前端編譯器也就是我們說的JavaC編譯器,它將Java源代碼編譯成了字節碼(class文件) public class Demo{ public static void main(String args[

原创 一、dart語言(數據類型,集合)

/** * 1.hello word */ main(List<String> args) { print("hello dart"); //2.定義變量 String name = "小明"; int age = 18

原创 (四)根Activity的啓動過程

Activity的啓動過程分爲兩種,一種是普通的Activity的啓動過程,另外一種就是根Activity的啓動過程,也就是我們點擊Launcher桌面上的圖標後啓動的第一個Activity。也可以理解爲我們的應用程序的啓動。在之前我們已經

原创 (一)Android系統架構

1.1、Android系統架構 Android系統架構主要分爲五層,從上到下依次是應用層、應用框架層、系統運行庫、硬件抽象層、硬件抽象層、Linux內核層。如下圖: 1.應用層(System Apps) 系統內置的應用或者開發者開發的應

原创 (三)應用程序進程啓動過程

1、應用程序進程簡介 要想啓動一個應用程序,首先要確保這個應用程序所需要的應用程序進程已經啓動。AMS在啓動應用程序的時候,會檢測這個應用程序所需要的的應用程序進程是否已經啓動,如果沒有啓動則請求Zygote進程創建啓動所需要的的應用程序進

原创 (二)Android系統啓動

在Android系統啓動流程中主要涉及到了多個進程的啓動,分別是init進程、Zygote進程、SystemServer啓動、以及Launcher去啓動 1.1、init進程啓動流程 init進程是Android系統中用戶空間的第一個進程,

原创 二、Java多線程編程 (對象及變量的併發訪問)

非線程安全 多個線程對同一個對象中的實例變量進行併發操作時會出現值被更改、值不同步的情況,進而影響程序的執行流程。 線程安全 線程安全就是獲得實例變量的值是經過同步處理的、不會出現被更改不同步的情況。 兩個例子來演示非線程安全和線程安全:

原创 一、Java多線程編程 (基礎篇)

一、進程和線程 進程是受操作系統管理的基本運行單元,我們可以把windows操作系統上運行的一個exe程序理解成一個進程,也可以把Android操作系統上運行的一個app理解成一個進程。 線程我們可以理解成是在進程中獨立運行的子任務,比如

原创 三、Java多線程編程 (線程間通信)

1、等待和通知機制(wait、notify) wait()方法 使當前執行代碼的線程進入等待的狀態,該方法是Object類的方法,使當前線程進入預執行隊列,使用wait()方法前,必須拿到對象級別的鎖,即只能在同步方法裏執行,執行wait方

原创 Java多線程編程 (對象及變量的併發訪問一)

非線程安全 多個線程對同一個對象中的實例變量進行併發操作時會出現值被更改、值不同步的情況,進而影響程序的執行流程。 線程安全 線程安全就是獲得實例變量的值是經過同步處理的、不會出現被更改不同步的情況。 兩個例子來演示非線程安全和線程安全:

原创 Java多線程編程 (基礎篇)

一、進程和線程 進程是受操作系統管理的基本運行單元,我們可以把windows操作系統上運行的一個exe程序理解成一個進程,也可以把Android操作系統上運行的一個app理解成一個進程。 線程我們可以理解成是在進程中獨立運行的子任務,比如