原创 深機筆記 - 19 Java語法糖的味道

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》10.3節 語法糖不會提供實質性功能改進,但或能提高效率、提升語法嚴謹性、減少編碼出錯機會 泛型與類型擦除 泛型是JDK1.5新增特性,本質是參數化類型(Parameters

原创 深機筆記 - 14 運行時棧幀結構

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》8.2節 不同的虛擬機實現在執行Java代碼時可能會有解釋執行(通過解釋器執行)和編譯執行(通過即時編譯器產生本地代碼執行)兩種選擇 棧幀(Stack Frame) 用於支

原创 深機筆記 - 13 類加載器

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》7.4節 每個類加載器,都擁有一個獨立的類名稱空間 對於任意類,需要由加載它的類加載器和該類本身一同確立其在Java虛擬機中的唯一性 比較兩個類是否“相等”,只有在兩個類是由

原创 深機筆記 - 09 Class類文件的結構

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》6.3節 本文關於Class文件結構以《Java虛擬機規範(第2版)》(1999年發佈,對應JDK1.4時代Java虛擬機)中的定義爲主線 一個Class文件對應唯一一個類或接

原创 深機筆記 - 10 字節碼指令簡介

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》6.4節 長度:1個字節 總數:<=256 面向:操作數棧,而非寄存器 對齊:操作數長度不對齊 操作碼助記符:i代表int,l代表long,s代表short,b代表byte,

原创 深機筆記 - 11 類加載的時機

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》7.2節 類的生命週期: 加載、驗證、準備、初始化和卸載5個階段必須按順序開始,不一定按順序進行、結束,這些階段通常是交叉進行的(在一個階段執行過程中調用、激活另外一個階段

原创 深機筆記 - 12 類的加載過程

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》7.3節 類的生命週期: 加載、驗證、準備、初始化和卸載5個階段必須按順序開始,不一定按順序進行、結束 這些階段通常是交叉進行的(在一個階段執行過程中調用、激活另外一個階段

原创 你假笨JVM參數 - 001 ReservedCodeCacheSize

你假笨JVM參數分享全整理 微信小程序:JVMPocket - JVM參數交流平臺,Javaer的神奇口袋 序號:001 時間:2017-07-13 參數:-XX:ReservedCodeCacheSize 含義: Reserve

原创 Python實現獲取第n個醜數

醜數:只包含質因子2,3和5的數稱作醜數(Ugly Number),1爲最小丑數 核心思想:新醜數一定是由已得醜數乘醜數因子得到的,要得到有序醜數列表,在已得醜數列表基礎上依次追加未得最小丑數即可,進而可得第n個醜數 完整方法: imp

原创 你假笨JVM參數 - 004 MaxTenuringThreshold

你假笨JVM參數分享全整理系列 微信小程序:JVMPocket - JVM參數交流平臺,Javaer的神奇口袋 序號:004 時間:2017-07-21 參數:-XX:MaxTenuringThreshold 含義: Sets the

原创 深機筆記 - 07 內存分配規則

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》3.6節 較普遍的內存分配規則: 1. 優先在新生代Eden區分配。Eden區無足夠空間時,發起一次Minor GC(新生代GC) 2. 大對象直接進入老年代。避免Eden、

原创 深機筆記 - 08 虛擬機性能監控及故障處理工具

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》4章 本章介紹的工具基於Windows平臺下JDK1.6 Update 21 JDK1.5需手動開啓JMX,JDK1.6默認開啓 這些工具大多是jdk/lib/tools.ja

原创 深機筆記 - 15 方法調用

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》8.3節 方法調用不等同於方法執行,方法調用階段唯一任務是確定被調用方法的版本(即調用哪一個方法),不涉及方法內部具體運行過程 Class文件編譯過程不包含連接步驟,方法調用

原创 你假笨JVM參數 - 005 CMSScavengeBeforeRemark

你假笨JVM參數分享全整理系列 微信小程序:JVMPocket - JVM參數交流平臺,Javaer的神奇口袋 序號:005 時間:2017-07-24 參數:-XX:CMSScavengeBeforeRemark 含義: Enable

原创 深機筆記 - 17 基於棧的字節碼解釋解釋執行引擎

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》8.4節 解釋執行 上圖中: 下邊那條分支,是傳統編譯原理中程序代碼到目標機器代碼的生成過程 中間那條分支,是解釋執行過程 詞法分析、語法分析以至後面的優化器、目標代碼生