原创 Java虛擬機——serial垃圾收集器

1:是什麼 收集算法是內存收到的⽅法論,垃圾回收器是內存回收的具體實現。 Serial是⼀個單線程的垃圾收集器 Serial(串行)垃圾收集器是最基本、發展歷史最悠久的收集器;    2:特點 針對新生代; 採用複製算法; 單線程

原创 Java虛擬機——CMS收集器

1:是什麼      CMS (Concurrent Mark Sweep)收集器是-種以獲取最短回收停頓時間爲⽬標的收集器。 ⽬前很⼤⼀部分的Java應⽤集中在互聯⽹站或者B/S系統的服務端上,這類應⽤尤其重 視服務 的響應速度,希望

原创 Java虛擬機——Java內存區域⽅法區

1:是什麼 是各個線程共享的內存區域,它⽤於存儲已被虛擬機加載的類信息、常量、靜態變量、即時 編譯器編譯後的代碼等數據 什麼是類信息:類版本號、⽅法、接⼝ 方法區(Method Area)存儲的類信息         對每個加載的類型

原创 Java虛擬機——Java內存區域程序計數器

1:是什麼? 程序計數器是⼀塊較⼩的內存空間,它可以看作是當前線程所執⾏的字節碼的⾏號指示器 線程是⼀個獨⽴的執⾏單元,是由CPU控制執⾏的 字節碼解釋器⼯作時就是通過改變這個計數器的值來選取下⼀條需要執⾏的字節碼指令,分⽀、循環、

原创 Java虛擬機——Java內存區域常量池

1:是什麼      運⾏時常量池是⽅法區的⼀部分,Class⽂件除了有類的版本、字段、⽅法、接⼝等描述信息 外,還有⼀項信息是常量池,⽤於存放編譯器⽣成的各種字⾯量和符號引⽤,這部分內容將 在類加載後進⼊⽅法區的運⾏時常量池中存放。

原创 Java虛擬機——ParNew收集器

1:是什麼       ParNew 收集器其實就是 Serial 收集器的多線程版本,除了使⽤多條線程進⾏垃圾收集之 外,其餘⾏爲包括 Serial 收集器可⽤的所有控制參數(例如:-XX: SurvivorRatio、-XX: Pr

原创 Java虛擬機——⼤對象的分配和逃逸分析

大對象分配是什麼? 所謂的⼤對象是指,需要⼤量連續內存空間的 Java 對象,最典型的⼤對象就是那種很⻓的字符串以及數組 虛擬機提供了⼀個-XX: PretenureSizeThreshold 參數,令⼤於這個設置值的對象直接在⽼年

原创 Java虛擬機——堆內存的分配

Java堆內存分配機制 Java堆內存的分配整體可以概述爲“自適應的,分代的,停止-複製,標記-清除”式的垃圾回收器。      分代指Java將堆內存劃分爲年輕代(Young Generation),年老代(Old Generatio

原创 Java虛擬機——對象的創建、對象的內存佈局、對象的訪問定位 簡述

1:Java對象的創建    判斷是否已經執行類加載      當虛擬機遇到一條new指令時 ,首先去檢查這個指令的參數是否能在常量池中定位到一個類的符號引用,並且檢查這個符號引用代表的類是否已經被加載、解析和初始化過,如果沒有,那必須先

原创 Java虛擬機——G1垃圾收集器

1:是什麼 G1是⼀款⾯向服務端應⽤的垃圾收集器,JDK1.7才正式引入,G1堆空間是一個被分成許多固定大小區域的內存塊。          圖片中的顏色表明了哪個區域被關聯上什麼角色。活躍對象從一個區域疏散(複製、移動)到另一個區域

原创 Java虛擬機——Parallel Scavenge收集器

1:是什麼 Parallel Scavenge 收集器是⼀個新⽣代收集器,它也是使⽤複製算法的收集器,⼜是並⾏的 多線程收集器,由於與吞吐量關係密切,Parallel Scavenge 收集器也經常稱爲“吞吐量優先”收集器 吞吐量是什

原创 數據庫——事務處理

1:定義 事務處理就是將一系列操作當做一個原子操作,要麼全部執行成功,如果執行失敗則保留執行期的狀態。通過提交和回滾機制來實現操作,如果全部執行成功通過提交執行commit結果就會記錄到數據庫中,如果執行失敗通過回滾操

原创 數據庫——觸發器

1:定義 是一種特殊的存儲過程。一般的存儲過程是通過存儲過程名直接調用,而觸發器主要是通過事件(增、刪、改)進行觸發而被執行的。其在表中數據發生變化時自動強制執行。常見的觸發器有兩種:after(for)、instead

原创 Java虛擬機——Java內存區域Java虛擬機棧

1:是什麼 ⽤於作⽤於⽅法執⾏的⼀塊Java內存區域 2: 爲什麼 每個⽅法在執⾏的同時都會創建⼀個棧幀(Stack Framel)⽤於存儲局部變量表、操作數 棧、動態鏈接、⽅法出⼝等信息。每⼀個⽅法從調⽤直⾄執⾏完成的過程,就對應

原创 Java虛擬機——Java內存區域本地⽅法棧

1:是什麼? ⽤於作⽤於本地⽅法執⾏的⼀塊Java內存區域, 用來⽀持native⽅法執⾏, native關鍵字說明其⽅法是一個原⽣態方法,方法對應的實現不是在當前文件,⽽是在⽤其他語⾔(如C和C++)實現的文件中 2:爲什麼?