[ 收藏 ] [ 繁体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  • 新类目

     管理
     投资理财
     经济
     社会科学
  • HotSpot實戰(異步圖書出品)
    該商品所屬分類:圖書 -> 人民郵電出版社
    【市場價】
    662-960
    【優惠價】
    414-600
    【作者】 陳濤 
    【出版社】人民郵電出版社 
    【ISBN】9787115343635
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    出版社:人民郵電出版社
    ISBN:9787115343635
    版次:1

    商品編碼:11414422
    品牌:異步圖書
    包裝:平裝

    開本:16開
    出版時間:2014-03-01
    用紙:膠版紙

    頁數:347
    正文語種:中文

    作者:陳濤

        
        
    "

    編輯推薦

    “蚓無爪牙之利,筋骨之強,上食埃土,下飲黃泉,用心一也。蟹六跪而二螯,非蛇蟮之穴無可寄托者,用心躁也”。對於技術人員來說,如果長期忽略自身技術的根基而去一昧地追求高層框架技術,這無疑是舍本求末的做法。
    相較於C或C++程序員,我發現Java程序員更容易忽視基礎技術。JVM的出現,為程序員屏蔽了操作繫統與硬件的細節,使得程序員從諸如內存管理這樣的繁瑣任務中解放出來。但這不並等同於允許Java程序員放棄對基礎的重視。我們是否有過這樣的經歷,在遇到內存故障、丟包、網絡協議設計、資源瓶頸、證書、二進制等問題時,往往會覺得比較棘手,在尋求解決思路時更是顯得力不從心。這實質上是自身技術遇到了瓶頸難以突破所致。可怕的是,想去深究的時候卻無從下手。
    我寫這本書的初衷是為了喚起Java程序員對於基礎技術的重視。事實上,任何平臺的程序員都應當了解平臺的基本特性、實現機制以及接口,這是提高自身修養的必經之路。對於Java程序員來說,我們需要了解的平臺就是JVM。了解JVM的基本實現機制,不僅對於解決實際應用中諸如GC等虛擬機問題時有直接幫助,還有利於我們更好地理解語言本身。
    所幸的是,Oracle官方已經將虛擬機項目的源碼開放出來,這對於我們來說簡直就是福音。本書將以OpenJDK和HotSpot為素材,深入淺出地講解我們熟悉的一款虛擬機產品的實現。除了Java程序員,從事與Java或JVM相關的開發、測試、運維等技術人員也將在《HotSpot實戰》中獲益。

    內容簡介

    《HotSpot實戰》深入淺出地講解了HotSpot虛擬機的工作原理,將隱藏在它內部的本質內容逐一呈現在讀者面前,包括OpenJDK與HotSpot項目、編譯和調試HotSpot的方法、HotSpot內核結構、Launcher、OOP-Klass對像表示繫統、鏈接、運行時數據區、方法區、常量池和常量池Cache、Perf Data、Crash分析方法、轉儲分析方法、垃圾收集器的設計演進、CMS和G1收集器、棧、JVM對硬件寄存器的利用、棧頂緩存技術、解釋器、字節碼表、轉發表、Stubs、Code Cache、Code生成器、JIT編譯器、C1編譯器、編譯原理、JVM指令集實現、函數的分發機制、VTABLE和ITABLE、異常表、虛擬機監控工具(如jinfo、jstack、jhat、jmap等)的實現原理和開發方法、Attach機制、基於GUI的JVM分析工具(如MAT、VisualVM)等內容。
    除了HotSpot技術,《HotSpot實戰》還對方法論進行了探討。在各個章節的講解中,都會有一些與繫統運行機制相關的實戰或練習,供讀者練手。通過這些實戰練習,不僅有助於讀者加深對知識或原理的理解,更為重要的是,它還可以培養讀者獨立探索的思維方式,這有助於讀者把知識融會貫通並靈活應用到實際項目中。
    《HotSpot實戰》適合於已具有一定Java編程基礎的讀者,以及在Java或基於JVM的編程語言平臺下進行各類軟件開發的開發人員、測試人員和運維人員。對於JVM和編程語言愛好者來說,《HotSpot實戰》也具有一定的學習參考價值。

    作者簡介

    陳濤,碩士,畢業於中國科技大學。現就職於網易公司旗下的網易寶,從事在線支付繫統的設計與開發工作。在從事Java工作之前 ,曾有過Linux內核及驅動開發工作經驗。熱衷於專研技術,對編程語言和JVM比較感興趣。工作之餘 ,喜歡足球和武俠帶來的樂趣。目前正在“專研”的課題是如何做一名稱職的奶爸。

    內頁插圖

    精彩書評

    陳濤是網易寶的核心開發人員之一,同時維護了網易寶的多個繫統。網易寶是網易官方的在線支付繫統,對開發工程師的技術要求極高。他喜歡專研技術,知識面寬,不僅對Java、C、C++熟悉,對操作繫統底層也很熟悉,能夠將理論很好地應用於實踐中。本書便是他潛心研究和實踐的成果。
    ——趙剛,網易寶繫統負責人,資深技術專家


    陳濤在Java開發領域知識的深度和廣度給我留下了深刻的印像。本書深入淺出地介紹了JVM技術,強調實踐應用。對於想深入研究JVM並希望快速取得進展的開發人員來說,本書非常具有實用價值,是Java開發水平更上一層樓的階石。
    ——陳雙輝,現任通策集團信息事業部CTO,曾在摩托羅拉移動擔任Senior PM。

    目錄

    第1章初識HotSpot1
    1.1JDK概述2
    1.1.1JCP與JSR3
    1.1.2JDK的發展歷程4
    1.1.3Java 7的語法變化7
    1.2動手編譯虛擬機13
    1.2.1源代碼下載13
    1.2.2HotSpot源代碼結構13
    1.2.3搭建編譯環境15
    1.2.4編譯目標16
    1.2.5編譯過程17
    1.2.6編譯常見問題19
    1.3實戰:在HotSpot內調試HelloWorld20
    1.3.1認識GDB21
    1.3.2準備調試腳本22
    1.4小結26

    第2章啟動28
    2.1HotSpot內核28
    2.1.1如何閱讀源代碼28
    2.1.2HotSpot內核框架36
    2.1.3Prims37
    2.1.4Services39
    2.1.5Runtime43
    2.2啟動46
    2.2.1Launcher46
    2.2.2虛擬機生命周期48
    2.2.3入口:main函數50
    2.2.4主線程51
    2.2.5InitializeJVM函數53
    2.2.6JNI_CreateJavaVM函數55
    2.2.7調用Java主方法56
    2.2.8JVM退出路徑 56
    2.3繫統初始化57
    2.3.1配置OS模塊58
    2.3.2配置繫統屬性60
    2.3.3加載繫統庫61
    2.3.4啟動線程62
    2.3.5vm_init_globals函數:初始化全局數據結構65
    2.3.6init_globals函數:初始化全局模塊65
    2.4小結69

    第3章類與對像70
    3.1對像表示機制71
    3.1.1OOP-Klass二分模型71
    3.1.2Oops模塊71
    3.1.3OOP框架與對像訪問機制73
    3.1.4Klass與instanceKlass79
    3.1.5實戰:用HSDB調試HotSpot82
    3.2類的狀態轉換87
    3.2.1入口:Class文件87
    3.2.2類的狀態92
    3.2.3加載96
    3.2.4鏈接101
    3.2.5初始化104
    3.2.6實戰:類的“族譜”107
    3.2.7實戰:繫統字典111
    3.3創建對像113
    3.3.1實例對像的創建流程114
    3.3.2實戰:探測JVM內部對像116
    3.4小結119

    第4章運行時數據區120
    4.1堆121
    4.1.1Java的自動內存管理121
    4.1.2堆的管理122
    4.2線程私有區域125
    4.2.1PC125
    4.2.2JVM棧126
    4.3方法區126
    4.3.1紐帶作用127
    4.3.2常量池130
    4.3.3常量池緩存:ConstantPoolCache133
    4.3.4方法的表示:methodOop134
    4.3.5方法的解析:將符號引用轉換成直接引用138
    4.3.6代碼放在哪裡:ConstMethodOop141
    4.3.7實戰:探測運行時常量池142
    4.4性能監控數據區:Perf Data147
    4.4.1描述這段空間:PerfMemory147
    4.4.2查看148
    4.4.3生產150
    4.5轉儲151
    4.5.1用VisualVM進行轉儲分析151
    4.5.2JVM Crash153
    4.6小結158

    第5章垃圾收集159
    5.1堆與GC160
    5.1.1垃圾收集160
    5.1.2分代收集162
    5.1.3快速分配165
    5.1.4棧上分配和逸出分析167
    5.1.5GC公共模塊167
    5.2垃圾收集器170
    5.2.1設計演進170
    5.2.2CMS收集器175
    5.2.3G1收集器180
    5.3實戰:性能分析方法184
    5.3.1獲取GC日志184
    5.3.2GC監控信息187
    5.3.3內存分析工具189
    5.3.4選擇合適的收集器與GC性能評估190
    5.3.5不要忽略JVM Crash日志195
    5.4小結196

    第6章棧197
    6.1硬件背景:了解真實機器198
    6.1.1程序是如何運行的198
    6.1.2x86與棧幀199
    6.1.3ARM對Java硬件級加速:Jazelle技術202
    6.2Java棧203
    6.2.1寄存器式指令集與棧式指令集203
    6.2.2HotSpot中的棧204
    6.2.3棧幀207
    6.2.4充分利用寄存器資源210
    6.2.5虛擬機如何調用Java函數212
    6.2.6優化:棧頂緩存221
    6.2.7實戰:操作數棧223
    6.3小結228

    第7章解釋器和即時編譯器229
    7.1概述230
    7.2解釋器如何工作231
    7.2.1Interpreter模塊232
    7.2.2Code模塊234
    7.2.3字節碼表235
    7.2.4Code Cache236
    7.2.5InterpreterCodelet與Stub隊列239
    7.2.6Code生成器241
    7.2.7模板表與轉發表244
    7.2.8實戰:InterpreterCodelet247
    7.3即時編譯器250
    7.3.1概述250
    7.3.2編譯器模塊251
    7.3.3編譯器的基本結構252
    7.3.4實戰:編譯原理實踐,了解編譯中間環節255
    7.4小結267

    第8章指令集268
    8.1再說棧式指令集268
    8.2數據傳送270
    8.2.1局部變量、常量池和操作數棧之間的數據傳送270
    8.2.2數據傳送指令272
    8.2.3實戰:數組的越界檢查277
    8.3類型轉換279
    8.4對像的創建和操作281
    8.5程序流程控制282
    8.5.1控制轉移指令282
    8.5.2條件轉移283
    8.5.3無條件轉移284
    8.5.4復合條件轉移285
    8.5.5實戰:switch語句如何使用String287
    8.6運算290
    8.6.1加法:iadd290
    8.6.2取負:ineg291
    8.7函數的調用和返回292
    8.7.1Java函數分發機制:VTABLE與ITABLE293
    8.7.2invoke繫列指令297
    8.7.3動態分發:覆蓋299
    8.7.4靜態分發:重載302
    8.8異常305
    8.8.1異常表305
    8.8.2創建異常306
    8.8.3try-catch309
    8.8.4finally311
    8.9小結312

    第9章虛擬機監控工具313
    9.1Attach機制314
    9.1.1AttachProvider與VirtualMachine314
    9.1.2命令的下發:execute()317
    9.1.3命令的執行:Attach Listener守護線程319
    9.2查看JVM進程320
    9.2.1用jps查看Java進程320
    9.2.2實戰:定制jps,允許查看庫路徑323
    9.3查看和配置JVM326
    9.3.1用jinfo查看JVM參數配置326
    9.3.2實戰:擴展flags選項,允許查看命令行參數330
    9.4堆內存轉儲工具332
    9.4.1Heap Dump332
    9.4.2原理333
    9.5堆轉儲分析337
    9.5.1Heap Dump分析工具:jhat337
    9.5.2實戰:MAT分析過程340
    9.6線程轉儲分析343
    9.6.1jstack343
    9.6.2實戰:如何分析資源等待344
    9.7小結347

    查看全部↓

    精彩書摘

    3.3.1 實例對像的創建流程
    實例的創建過程,首先根據從類常量池中獲取對像類型信息並驗證類是否已被解析過,若確保該類已被加載和正確解析,使用快速分配(fast allocation)技術為該類分配對像空問;若該類尚未解析過,則隻能通過慢速分配(slow allocation)方式分配實例對像。實例的創建流程如圖3—30所示。
    對像的創建基本流程如下所示。
    (1)驗證類已被解析。
    (2)獲取instanceKlass,確保klass已完全初始化。
    (3)若滿足快速分配條件,則進入快速分配流程。
    (4)若不滿足快速分配條件,或者快速分配失敗,則進入慢速分配流程。
    接下來,我們來看一下快速分配與慢速分配的區別和使用場景。
    1.快速分配
    如果在實例分配之前已經完成了類型的解析,那麼分配操作僅僅是在內存空間中劃分可用內存,因此能以較高效效率實現內存分配,故稱為快速分配。
    根據分配空間是來自於線程私有區域還是共享的堆空間,快速分配又可以分為兩種空間選擇策略。
    HotSpot通過線程局部分配緩存技術(即Thread.Local Allocation Buffers,簡稱TLABs)可以在線程私有區域實現空間的分配。
    注意可以通過VM選項UseTLAB來開啟或關閉TLAB功能。
    根據是否使用TLAB,快速分配方式有兩種選擇策略。
    選擇TLAB:首先嘗試在TLAB中分配,因為TLAB是線程私有區域,故不需要加鎖便能夠保證線程安全。在分配一個新的對像空間時,將首先嘗試在TLAB空間中分配對像空間,若分配空間的請求失敗,則再嘗試使用加鎖機制在Eden區分配對像。
    選擇Eden空間:若失敗,則嘗試在共享的Eden區進行分配,Eden區是所有線程共享區域,需要保證線程安全,故采用原子操作進行分配。若分配失敗,則再次嘗試該操作,直到分配成功為止。
    查看全部↓



    "
     
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部