Java線程堆棧分析方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)領(lǐng)域的Java分析技術(shù),尤其涉及一種Java線程堆棧分析方法 及系統(tǒng)。
【背景技術(shù)】
[0002] Java是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,具有很好的通用型、高效性及安全性,廣泛 的應(yīng)用于手機(jī)游戲、數(shù)據(jù)中心、企業(yè)應(yīng)用及互聯(lián)網(wǎng)等場(chǎng)景。
[0003] Java程序運(yùn)行故障時(shí),將生成記錄故障信息的Java線程堆棧文件;然而,所述 Java線程堆棧文件僅是對(duì)故障的記錄,若需要獲取導(dǎo)致Java程序深層次的故障原因,通常 都需要分析人員進(jìn)行人工分析。
[0004] 而進(jìn)行上述人工分析,分析人員必須對(duì)Java虛擬機(jī)、操作系統(tǒng)、軟件框架以及應(yīng) 用程序等多方面知識(shí)有較為深入和綜合的了解;與此同時(shí),分析人員必須非常熟悉常用程 序框架的原理和調(diào)用邏輯、Java線程堆棧文件與Java程序的對(duì)應(yīng)關(guān)系等,才能快速準(zhǔn)確的 定位問題;否則將導(dǎo)致問題分析效率低、周期長(zhǎng)。當(dāng)問題不能及時(shí)處理時(shí),勢(shì)必使得系統(tǒng)存 在隱患,最終導(dǎo)致用戶體驗(yàn)感受差等問題。
【發(fā)明內(nèi)容】
[0005] 有鑒于此,本發(fā)明實(shí)施例的主要目的在于提供一種智能分析Java線程堆棧文件, 簡(jiǎn)化Java程序故障診斷的Java線程堆棧文件分析方法及系統(tǒng)。
[0006] 為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0007] 本發(fā)明提供一種Java線程堆棧分析方法,所述方法包括:
[0008] 讀取Java線程堆棧文件;
[0009] 將讀取的Java線程堆棧文件的內(nèi)容與預(yù)先存儲(chǔ)的特征信息進(jìn)行匹配,獲取匹配 結(jié)果;
[0010] 獲取匹配結(jié)果滿足預(yù)設(shè)匹配策略的所述特征信息所映射的問題分析信息;
[0011] 根據(jù)所述問題分析信息生成Java線程堆棧分析報(bào)告。
[0012] 優(yōu)選地,
[0013] 所述特征信息包括若干第一關(guān)鍵字;
[0014] 將讀取的所述Java線程堆棧文件的內(nèi)容與預(yù)先存儲(chǔ)的特征信息進(jìn)行匹配,獲取 匹配結(jié)果為:
[0015] 將所述Java線程堆棧文件的內(nèi)容與每個(gè)所述第一關(guān)鍵字進(jìn)行關(guān)鍵字匹配;
[0016] 獲取所述第一關(guān)鍵字的優(yōu)先級(jí);
[0017] 根據(jù)匹配成功的所述第一關(guān)鍵字、所述優(yōu)先級(jí)以及預(yù)設(shè)概率算法,計(jì)算出匹配概 率形成所述匹配結(jié)果。
[0018] 優(yōu)選地,
[0019] 所述特征信息包括若干條;
[0020] 所述Java線程堆棧文件的內(nèi)容與每條所述特征信息均進(jìn)行匹配,并分別獲取匹 配結(jié)果;
[0021] 獲取匹配結(jié)果滿足預(yù)設(shè)匹配策略的所述特征信息所映射的問題分析信息為:
[0022] 獲取匹配結(jié)果中匹配概率最高的所述特征信息所映射的問題分析信息。
[0023] 優(yōu)選地,所述Java線程堆棧文件的內(nèi)容包括Java程序的Java包路徑、類名、方法 以及調(diào)用堆棧中的一種或多種。
[0024] 優(yōu)選地,所述方法還包括:
[0025] 通過樣本訓(xùn)練,形成所述特征信息以及所述特征信息所映射的問題分析信息。
[0026] 本發(fā)明還提供了一種Java線程堆棧分析系統(tǒng),所述系統(tǒng)包括讀取模塊、匹配模 塊,獲取模塊、分析報(bào)告形成模塊以及特征庫;
[0027] 所述讀取模塊,用以讀取Java線程堆棧文件;
[0028] 所述匹配模塊,用以將讀取的Java線程堆棧文件的內(nèi)容與預(yù)先存儲(chǔ)的特征信息 進(jìn)行匹配,獲取匹配結(jié)果;
[0029] 所述獲取模塊,用以獲取匹配結(jié)果滿足預(yù)設(shè)匹配策略的所述特征信息所映射的問 題分析信息;
[0030] 所述分析報(bào)告形成模塊,用以根據(jù)所述問題分析信息生成Java線程堆棧分析報(bào) 告;
[0031] 所述特征庫,用以存儲(chǔ)所述特征信息以及所述特征信息所映射的問題分析信息。
[0032] 優(yōu)選地,
[0033] 所述特征信息包括若干第一關(guān)鍵字;
[0034] 所述匹配模塊,具體用以將讀取的Java線程堆棧文件的內(nèi)容與每個(gè)所述第一關(guān) 鍵字進(jìn)行關(guān)鍵字匹配;獲取所述第一關(guān)鍵字的優(yōu)先級(jí);根據(jù)匹配成功的所述第一關(guān)鍵字、 所述優(yōu)先級(jí)以及預(yù)設(shè)概率算法,計(jì)算出匹配概率形成所述匹配結(jié)果。
[0035] 優(yōu)選地,
[0036] 所述特征信息包括若干條;
[0037] 所述匹配模塊,用以所述Java線程堆棧文件的內(nèi)容與每條所述特征信息均進(jìn)行 匹配,并分別獲取匹配結(jié)果
[0038] 所述獲取模塊,用以獲取匹配結(jié)果中匹配概率最高的所述特征信息所映射的問題 分析信息。
[0039] 優(yōu)選地,所述Java線程堆棧文件的內(nèi)容包括Java程序的Java包路徑、類名、方法 以及調(diào)用堆棧中的一種或多種。
[0040] 優(yōu)選地,所述系統(tǒng)還包括特征庫管理模塊;
[0041] 所述特征庫管理模塊,用以通過樣本訓(xùn)練,形成所述特征信息以及所述特征信息 所映射的問題分析信息。
[0042] 本發(fā)明實(shí)施例通過將Java線程堆棧文件內(nèi)容與預(yù)先存儲(chǔ)的特征信息的匹配,獲 得問題分析信息,如此,能在Java程序故障并形成Java線程堆棧文件后,及時(shí)進(jìn)行Java程 序故障分析。由于各類特征信息以及問題分析信息都是預(yù)先設(shè)置好的,完成匹配即可獲得 問題分析信息,從而具有效率高、準(zhǔn)確度高等優(yōu)點(diǎn)。
[0043] 與此同時(shí),本發(fā)明實(shí)施例不再要求分析人員對(duì)與Java線程堆棧文件分析相關(guān)的 知識(shí)有全面綜合的了解,能自動(dòng)智能分析,從而降低了分析人員的工作難度,減少了工作 量。
[0044] 此外,本發(fā)明實(shí)施例能有效避免一些Java程序發(fā)生故障(但不足以導(dǎo)致Java程序 立即停止運(yùn)行)所形成的問題堆積和隱患,故而能有效地提高用戶體驗(yàn)感受。
【附圖說明】
[0045] 圖1為本發(fā)明實(shí)施例所述Java線程堆棧文件分析方法的流程示意圖;
[0046] 圖2為圖1中步驟S120的流程示意圖;
[0047] 圖3為本發(fā)明實(shí)施例所述Java線程堆棧文件分析系統(tǒng)的結(jié)構(gòu)示意圖之一;
[0048] 圖4為本發(fā)明實(shí)施例所述Java線程堆棧文件分析系統(tǒng)的結(jié)構(gòu)示意圖之二。
【具體實(shí)施方式】
[0049] 下面結(jié)合說明書附圖以及實(shí)施例對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步詳細(xì)的闡述。
[0050] 本實(shí)施例提供了一種Java線程堆棧分析方法,如圖1所示,所述方法包括:
[0051] 步驟SllO :讀取Java線程堆棧文件;
[0052] 步驟S120 :將讀取的Java線程堆棧文件的內(nèi)容與預(yù)先存儲(chǔ)的特征信息進(jìn)行匹配, 獲取匹配結(jié)果;
[0053] 步驟S130 :獲取匹配結(jié)果滿足預(yù)設(shè)匹配策略的所述特征信息所映射的問題分析 信息;
[0054] 步驟S140 :根據(jù)所述問題分析信息生成Java線程堆棧分析報(bào)告。
[0055] 步驟SllO中所述Java線程堆棧文件,通常為Java程序運(yùn)行故障時(shí)生成的 Javacore文件,且一般為純文本文件。文件內(nèi)容格式會(huì)隨著Java程序版本的不同發(fā)生變 化。在讀取所述Java線程堆棧文件時(shí),根據(jù)不同版本的文件調(diào)用不同的接口來讀取,讀取 的內(nèi)容可以存儲(chǔ)到內(nèi)存中,以便于所述步驟S120中的匹配。
[0056] Java運(yùn)行出現(xiàn)故障,根據(jù)人工分析可以獲取故障原因,且通過進(jìn)一步分析得到: 故障不同,所述Java線程堆棧文件中所呈現(xiàn)的內(nèi)容也不同,從而所述不同的內(nèi)容形成了不 同故障的特征信息。根據(jù)上述原理,可以預(yù)先提取Java運(yùn)行可能出現(xiàn)的各種故障的特征信 息并存儲(chǔ),再通過實(shí)際運(yùn)行中記錄Java程序故障的Java線程堆棧文件的內(nèi)容與預(yù)先存儲(chǔ) 的各種特征信息進(jìn)行匹配,若匹配成功,則說明導(dǎo)致故障的原因可能是匹配到的特征信息 所映射的原因。
[0057] 所述步驟S120中,將Java線程堆棧文件的內(nèi)容與特征