VJToolsJava 常用工具包
VJTools,是主力于Java的唯品會(huì),關(guān)于Java的一些小家底:《唯品會(huì)Java開(kāi)發(fā)手冊(cè)》,核心基礎(chǔ)類(lèi)庫(kù)VJKit ,問(wèn)題排查工具VJMap 和 VJTop 三部分。
1.《唯品會(huì)Java開(kāi)發(fā)手冊(cè)》
《阿里巴巴Java開(kāi)發(fā)手冊(cè)》,是首個(gè)對(duì)外公布的企業(yè)級(jí)Java開(kāi)發(fā)手冊(cè), 意義重大。
我們結(jié)合唯品會(huì)的內(nèi)部經(jīng)驗(yàn),參考《Clean Code》、《Effective Java》等重磅資料進(jìn)行了大幅定制,感謝阿里授權(quán)修改。《唯品會(huì)Java開(kāi)發(fā)手冊(cè)》在線閱讀版 。
2. 核心類(lèi)庫(kù)VJKit
綜合眾多開(kāi)源類(lèi)庫(kù)的精華而成, 讓開(kāi)發(fā)人員避免底層代碼的重復(fù)開(kāi)發(fā),默認(rèn)就擁有最佳實(shí)踐,尤其在性能的方面。
針對(duì)“文本,數(shù)字,日期,文件,集合,并發(fā),反射”這些開(kāi)發(fā)人員的日常,VJKit做了兩件事情:
一是對(duì)Guava與Common Lang中最常用API的提煉歸類(lèi),避免了大家直面茫茫多的API。
二是對(duì)各門(mén)各派的精華的借鑒移植:比如一些大項(xiàng)目的附送基礎(chǔ)庫(kù)如Netty,ElasticSearch,一些專(zhuān)業(yè)的基礎(chǔ)庫(kù)如Jodd,一些大廠的基礎(chǔ)庫(kù)如Facebook和Twitter。
3. 工具集-VJMap
分代版的jmap(新生代,存活區(qū),老生代),是排查內(nèi)存緩慢泄露,老生代增長(zhǎng)過(guò)快原因的利器。
jmap -histo PID 打印的是整個(gè)Heap的對(duì)象統(tǒng)計(jì)信息,而為了定位上面的問(wèn)題,我們需要專(zhuān)門(mén)查看OldGen對(duì)象,和Survivor區(qū)老齡剩男的工具。
致敬R大,思路來(lái)源于TBJMap,翻新后支持JDK8,支持Survivor區(qū)老齡對(duì)象過(guò)濾,以及大天秤對(duì)輸出結(jié)果不要看歪脖子的執(zhí)著。
4. 工具集-VJTop
若你習(xí)慣以Top觀察 “OS指標(biāo)及繁忙的進(jìn)程”,也推薦以VJTop觀看 “JVM指標(biāo)及CPU最繁忙,占用內(nèi)存最多的線程”。
常用場(chǎng)景:
-
性能問(wèn)題快速定位,用vjotp顯示出CPU或內(nèi)存繁忙線程,再實(shí)時(shí)交互翻查該線程的statk trace。
-
壓測(cè)場(chǎng)景,使用vjtop 實(shí)時(shí)反饋JVM進(jìn)程狀態(tài),類(lèi)似于使用dstast對(duì)操作系統(tǒng)級(jí)別的監(jiān)控。
-
生產(chǎn)環(huán)境,當(dāng)應(yīng)用出現(xiàn)問(wèn)題時(shí),用vjtop快速了解進(jìn)程的狀態(tài)??膳c監(jiān)控系統(tǒng)聯(lián)合,發(fā)現(xiàn)指標(biāo)如CPU, 超時(shí)數(shù)超閾值時(shí),用鉤子腳本調(diào)vjtop來(lái)紀(jì)錄事發(fā)地的狀況。
