原创 JVM——多線程理解

Java內存模型 Java內存模型的主要主要、目標是定義程序中各個變量的訪問規則,即在虛擬機中將變量儲存到內存和從內存中取出變量這樣的底層細節。 Java內存模型規定了所有變量都存儲在主內存中(此處的主內存與介紹物理硬件時的主內存名

原创 類加載器

概述 Class文件以何種格式存儲,類型合適加載、如何連接,以及虛擬機直接控制的行爲,用戶程序無法對其他進行改變。能通過程序進行操作的,主要是字節碼生成與類加載器這兩部分的功能。 Tomcat:正統的類加載器架構 部署到同一個服務器

原创 JVM——方法調用

概念 方法調用並不等同於方法執行,方法調用階段唯一的任務就是確定被調用方法的版本(即調用哪一個方法),暫時還不設計方法內部的具體運行過程。在程序運行時,進行方法調用是最普遍、最頻繁的操作,Class文件的編譯過程中不包含傳統編譯中的連

原创 JVM——虛擬機字節碼執行引擎

概述 執行引擎是Java虛擬機最核心的組成部分之一。“虛擬機”是相對於一個“物理機”的概念,這兩種都有代碼執行能力,其區別是物理機的執行是直接建立在處理器、硬件、指令和操作系統層面的,而虛擬機的執行引擎則是由自己實現的,因此可以自行制

原创 JVM——虛擬機類加載機制

概述 虛擬機把描述類的數據從Class文件加載到內存,並對數據進行校驗、轉換解析和初始化,最終形成可以被虛擬機直接使用的Java類型,這就是虛擬機的類加載機制。 在Java語言裏面,類型的加載、連接和初始化過程都是程序運行期間完成的,

原创 JVM——字節碼指令

字節碼簡介 Java虛擬機的指令由一個字節長度、代表着某種特定操作含義的數字(稱爲操作碼,Opcode)以及跟隨其後的零至多個代表此操作所需參數(稱爲操作數,Operands)而構成。由於Java虛擬機採用面向操作數棧而不是寄存器的架

原创 JVM——類文件結構

Java誕生之初的口號:“一次編寫,到處運行(Write Once, Run Anywhere)”。 各個平臺的虛擬機與所有平臺都同意使用的程序存儲格式——字節碼(ByteCode)是構成平臺無關性的基石。實現語言無關性的基礎人生是虛

原创 JVM中的安全點

什麼是安全點? 在 JVM 中如何判斷對象可以被回收 一文中,我們知道 HotSpot 虛擬機採取的是可達性分析算法。即通過 GC Roots 枚舉判定待回收的對象。 那麼,首先要找到哪些是 GC Roots。 有兩種查找 GC Ro

原创 JVM學習——虛擬機性能監控與故障處理工具

定位一個系統的出現的問題,知識、經驗是關鍵基礎,數據是一句,工作是運用知識處理數據的手段。數據包括:運行日誌、異常對戰、GC日誌、線程快照、堆轉存儲快照等等。經常使用適當的虛擬機監控和分析的工具可以加快我們分析數據、定位解決問題的速度

原创 JVM學習歷程---(虛擬機結構圖)

程序計數器(Program Counter Register) 較小的內存空間,看做當前線程所執行的字節碼的行號指示器。在虛擬機的概念模型裏,字節碼解釋器工作時就說通過改變這個計數器的值來取下一條需要執行的字節碼指令,分支、循環、跳

原创 JVM的GC

垃圾收集(Garbage Collection, GC) 虛擬機中程序計數器、虛擬機棧、本地方法棧3個區域隨線程而生,隨線程而滅;棧中的棧幀隨着方法的進入和退出有條不紊地執行着出棧和入棧操作。-----------(這幾個區域的內存分

原创 JVM的對象

對象創建的幾種方法 這部分的內容回頭再補充 使用new關鍵字創建: Object object = new Object(); Class類下的newInstance()方法: Object objet = Class.cl

原创 Spring boot學習之路

面試過了,主管扔了一份技術棧給我,看了一下,springboot完完全全沒有聽說過。於是就開啓了我的學習之路,在學習之前要複習一下Spring知識點 spring 1.x 時代使用xml配置 spring 2.x 時代隨着jdk1.5

原创 SSH日記

由於先學Mybatis原因,Hibernate放到現在才學。 跟着http://how2j.cn/k/hibernate/hibernate-tutorial/31.html#nowhere這個網站先做一遍 SQL: use test

原创 攔截器

Interceptor接口方法: public interface Interceptor { public boolean before(Object proxy, Object target, Method method, Ob