TOP
紅利積點抵現金,消費購書更貼心
Java深度調試技術(簡體書)
滿額折

Java深度調試技術(簡體書)

商品資訊

人民幣定價:89 元
定價
:NT$ 534 元
優惠價
87465
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點 :13 點
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

Java系統越來越複雜,且很多系統不允許停機維護,這就給問題的定位帶來了巨大的困難。本書將重點介紹問題定位技巧,借助這些技巧,讀者可以快速找到解決問題的突破口。



本書共有15章,內容涉及Java線程堆棧分析、性能瓶頸分析、內存洩漏分析和堆內存設置、併發和多線程、幽靈代碼、常見的Java陷阱、數據庫、字符集與編碼、JVM運行參數、常用問題定位工具、計算架構與存儲架構、開發語言等的選擇、設計軟件系統、工程實踐、常見案例等內容。



本書內容較為專業,適合有一定Java編程經驗的人員閱讀,尤其是高級程序員、系統架構師等學習使用。本書對提升讀者的工作效率有較大的幫助。

作者簡介

張民衛,系統架構師,曾在華為任職11年,主持華為公司所有基於 Java 語言平臺的產品的疑難問題技術攻關工作,所支持產品覆蓋全球130 多個國家。有近20年的Java開發經驗,對超高可靠性與穩定性(99.999%的高可靠性要求)系統有深刻的理解和豐富的實戰經驗。作為技術專家,長期從事網上重大、特大運行事故以及疑難問題的技術攻關工作。

名人/編輯推薦

系統:全方位講解生產環境下Java運行期的非功能性故障發生的機理,定位方法、技巧與工具。

經典:凝聚筆者近20年的Java無人值守系統故障處理經驗,首次奉獻。

深入:從故障現象層層剝繭,深入分析發生的根因、臨場救急方法、事前預防到事後補救技術。

實戰:近百個案例均來自生產環境,介紹的方法命中率超過95%。

目次

第 1 章 Java 線程堆棧分析 1



1.1 打印線程堆棧 3



1.2 解讀線程堆棧 4



1.3 線程堆棧分析的三個視角24



1.3 借助線程堆棧進行問題分析26



第 2 章 通過 Java 線程堆棧進行性能瓶頸分析 43



2.1 基本原理分析44



2.2 常見的性能瓶頸問題50



2.3 性能瓶頸分析的手段和工具51



2.4 性能分析的手段總結59



第 3 章 Java 內存洩漏分析和堆內存設置 62



3.1 Java 內存洩漏的背景知識63



3.2 Java 內存洩漏的症狀81



3.3 Java 內存洩漏的定位和分析83



3.4 Java 堆內存洩漏的解決92



3.5 Java 內存和垃圾的回收設置94



第 4 章 關於併發和多線程102



4.1 在什麼情況下需要加鎖103



4.2 如何加鎖104



4.3 多線程編程易犯的錯誤106



4.4 i++ 這種原子操作是否需要同步保護107



4.5 一個進程擁有的線程多,是否就可以獲得更多的 CPU 107



4.6 合理設置線程的數量107



4.7 關於線程池109



4.8 notify 和 wait 的組合 109



4.9 線程的阻塞 113



4.10 Java 線程的優先級 115



4.11 關於多線程的錯誤觀點 115



第 5 章 幽靈代碼116



5.1 由異常而導致的函數非自主退出 117



5.2 wait () 與循環123



5.3 Double-Checked Locking 單例模式124



5.4 另一種異常陷阱――連續的關鍵接口調用 125



第 6 章 常見的 Java 陷阱 127



6.1 不穩定的 Runtime、getRuntime()、exec ()128



6.2 JDK 自帶 Timer 的適用場合140



6.3 JDK 自帶線程池的陷阱146



6.4 Timer 的使用陷阱146



第 7 章 關於數據庫147



7.1 關於數據庫表死鎖與鎖表的問題148



7.2 Oracle 的鎖表 / 死鎖151



7.3 使用事務的方法153



第 8 章 字符集與編碼 154



8.1 字符集155



8.2 編碼155



8.3 編碼的識別157



8.4 關於編碼的轉換158



第 9 章 JVM 運行參數解析 160



9.1 Java 運行期參數161



9.2 Java -X 擴展運行參數167



9.3 關於即時編譯器(JIT)171



9.4 -Xrunhprof172



9.5 正確的視角看虛擬機180



第 10 章 常用的問題定位工具181



10.1 遠程調試 182



10.2 UNIX 下的進行分析利器 proc 182



10.3 UNIX 的進程統計工具 prstat187



10.4 UNIX 的剖析工具 188



10.5 路由跟蹤命令 traceroute/tracert 188



10.6 swap 交換分區管理189



10.7 文件類型 / 符號表 189



10.8 Windows 的相關工具 189



第 11 章 計算架構與存儲架構191



11.1 計算架構――基於無狀態的設計192



11.2 存儲架構――數據分片196



11.3 存儲架構的總結199



11.4 其他架構的設計建議200



第 12 章 項目生命週期與框架、語言、開源選擇202



12.1 以項目時間尺度衡量開發語言的選擇 203



12.2 以項目時間尺度衡量開發框架的使用策略 204



12.3 以項目時間尺度衡量開源的選擇 205



第 13 章 設計“工業強度”的軟件系統207



13.1 長期運行能力的構建 208



13.2 瞬時峰值 / 過載的應對能力構建 208



13.3 池的合理設計 210



13.4 消息系統的設計模型和關鍵點 215



第 14 章 工程實踐221



14.1 關於高端機器的系統部署 222



14.2 關於物理機與虛擬化 222



14.3 關於 Java 進程監控223



14.4 關於 class Loader223



14.5 關於負載控制 224



14.6 關於機器設置多個 IP 的原理 225



14.7 關於日誌 225



14.8 異常處理的原則 228



14.9 基於限制的系統部署 / 設計 228



14.10 String 的值不能改變的原因229



14.11 系統出現問題時需要收集的信息 229



14.12 Web Failover 集群的方案 229



14.13 關於可靠性設計232



14.14 實現 JVM Shutdown 鉤子函數232



14.15 截取輸出流233



14.16 將 Linux 進程綁定在特定的 CPU 上運行234



14.17 關於 Java 和 C++ 的互通 234



第 15 章 常見的案例236



15.1 太多打開的文件 237



15.2 java.lang.StackOverflflowError 239



15.3 java.net.SocketException: Broken pipe 240



15.4 HashMap 的 ConcurrentModiftcationException 241



15.5 多線程場合下 HashMap 導致的無限死循環 242



15.6 Web 系統吊死(掛死)的定位思路 245



15.7 基於消息系統(如 SIP)吊死的定位思路 247



15.8 多線程讀 / 寫 Socket 導致的數據混亂 247



15.9 CPU 使用率過高問題的定位思路248



15.10 系統運行越來越慢的定位思路251



15.11 系統掛死問題的定位思路 252



15.12 關於線程死亡 / 線程跑飛253



15.13 關於虛擬機 core dump255



15.14 系統運行越來越慢問題的定位思路257



15.15 代碼 GC 導致的性能低下 257



15.16 連接池耗盡259



15.17 更改系統時間導致的系統無法正常工作260



15.18 瞬間內存洩漏的定位思路261



15.19 第三方系統能力分析262



15.20 系統性能過低264



15.21 未捕獲的異常導致數據庫鎖表,全系統連鎖宕機267



15.22 單機內存洩漏導致數據庫鎖表,全系統連鎖宕機268



15.23 AIX 下 CPU 使用率被 100% 佔用的定位思路270



15.24 Linux 下提高 UDP 吞吐量270



15.25 TIME_WAIT 狀態下連接不能及時釋放270



15.26 由 SAN 存儲鏈路問題引起的應用層白屏 272



附錄 A JProfiler 內存洩漏的精確定位 275



附錄 B SUN JDK 自帶故障定位280



附 B.1 SUN JDK 命令行選項280



附 B.2 診斷工具的詳細介紹282



附 B.3 內存洩漏問題的定位317



附 B.4 系統崩潰的定位方法327



附 B.5 致命錯誤日誌335



附錄 C Solaris 下查找佔用指定的端口的進程351



附錄 D 如何在 solaris 下分析 I/O 瓶頸352



附錄 E AIX 下 32 位進程的最大內存佔有情況353



附錄 F 關於 TCP/IP354



附錄 G Windows 2003/Windows XP 下一個端口多個監聽355



附錄 G 在 Windows 2003/Windows XP 下一個端口多個監聽356



附錄 H Suse 9.0 下線程創建的數量和堆內存 / 永久內存的關係357



附錄 I JConsole358



附錄 J Gcviewer 359



附錄 K IBM JDK 下定位引起 core dump 的 JIT 方法360



附錄 L 一份簡短的 Java 編程規範 361



參考文獻363

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區