<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # show-duplicate-java-classes 偶爾會遇到本地開發、測試都正常,上線后卻莫名其妙的 class 異常,歷經千辛萬苦找到的原因竟然是 Jar沖突!這個工具就可以找出Java Lib(Java庫,即Jar文件)或Class目錄(類目錄)中的重復類。 Java開發的一個麻煩的問題是Jar沖突(即多個版本的Jar),或者說重復類。會出NoSuchMethod等的問題,還不見得當時出問題。找出有重復類的Jar,可以防患未然 ~~~ # 查找當前目錄下所有Jar中的重復類 show-duplicate-java-classes # 查找多個指定目錄下所有Jar中的重復類 show-duplicate-java-classes path/to/lib_dir1 /path/to/lib_dir2 # 查找多個指定Class目錄下的重復類。Class目錄 通過 -c 選項指定 show-duplicate-java-classes -c path/to/class_dir1 -c /path/to/class_dir2 # 查找指定Class目錄和指定目錄下所有Jar中的重復類的Jar show-duplicate-java-classes path/to/lib_dir1 /path/to/lib_dir2 -c path/to/class_dir1 -c path/to/class_dir2 ~~~ 例如: ~~~ # 在war模塊目錄下執行,生成war文件 $ mvn install ... # 解壓war文件,war文件中包含了應用的依賴的Jar文件 $ unzip target/*.war -d target/war ... # 檢查重復類 $ show-duplicate-java-classes -c target/war/WEB-INF/classes target/war/WEB-INF/lib ... ~~~ # find-in-jars 在當前目錄下所有jar文件里,查找類或資源文件。 用法:注意,后面Pattern是grep的 擴展正則表達式。 ~~~ find-in-jars?'log4j\.properties'find-in-jars?'log4j\.xml$'?-d?/path/to/find/directoryfind-in-jars?log4j\\.xmlfind-in-jars?'log4j\.properties|log4j\.xml' ~~~ 示例: ~~~ $?./find-in-jars?'Service.class$'./WEB-INF/libs/spring-2.5.6.SEC03.jar!org/springframework/stereotype/Service.class./rpc-benchmark-0.0.1-SNAPSHOT.jar!com/taobao/rpc/benchmark/service/HelloService.class ~~~ # housemd pid \[java\_home\] 很早的時候,我們使用BTrace排查問題,在感嘆BTrace的強大之余,也曾好幾次將線上系統折騰掛掉。2012年淘寶的聚石寫了HouseMD,將常用的幾個Btrace腳本整合在一起形成一個獨立風格的應用,其核心代碼用的是Scala,HouseMD是基于字節碼技術的診斷工具, 因此除了Java以外, 任何最終以字節碼形式運行于JVM之上的語言, HouseMD都支持對它們進行診斷, 如Clojure(感謝@Killme2008提供了它的使用入門), scala, Groovy, JRuby, Jython, kotlin等. 使用housemd對java程序進行運行時跟蹤,支持的操作有: * 查看加載類 * 跟蹤方法 * 查看環境變量 * 查看對象屬性值 * 詳細信息請參考: https://github.com/CSUG/HouseMD/wiki/UserGuideCN # jvm pid 執行jvm debug工具,包含對java棧、堆、線程、gc等狀態的查看,支持的功能有: ~~~ ========線程相關======= 1 : 查看占用cpu最高的線程情況 2 : 打印所有線程 3 : 打印線程數 4 : 按線程狀態統計線程數 ========GC相關======= 5 : 垃圾收集統計(包含原因)可以指定間隔時間及執行次數,默認1秒, 10次 6 : 顯示堆中各代的空間可以指定間隔時間及執行次數,默認1秒,5次 7 : 垃圾收集統計。可以指定間隔時間及執行次數,默認1秒, 10次 8 : 打印perm區內存情況*會使程序暫停響應* 9 : 查看directbuffer情況 ========堆對象相關======= 10 : dump heap到文件*會使程序暫停響應*默認保存到`pwd`/dump.bin,可指定其它路徑 11 : 觸發full gc。*會使程序暫停響應* 12 : 打印jvm heap統計*會使程序暫停響應* 13 : 打印jvm heap中top20的對象。*會使程序暫停響應*參數:1:按實例數量排序,2:按內存占用排序,默認為1 14 : 觸發full gc后打印jvm heap中top20的對象。*會使程序暫停響應*參數:1:按實例數量排序,2:按內存占用排序,默認為1 15 : 輸出所有類裝載器在perm里產生的對象。可以指定間隔時間及執行次數 ========其它======= 16 : 打印finalzer隊列情況 17 : 顯示classloader統計 18 : 顯示jit編譯統計 19 : 死鎖檢測 20 : 等待X秒,默認為1 q : exit ~~~ 進入jvm工具后可以輸入序號執行對應命令 可以一次執行多個命令,用分號";"分隔,如:1;3;4;5;6 每個命令可以帶參數,用冒號":"分隔,同一命令的參數之間用逗號分隔,如: ~~~ Enter command queue:1;5:1000,100;10:/data1/output.bin ~~~ # `greys[@IP:PORT]` PS:目前Greys僅支持Linux/Unix/Mac上的Java6+,Windows暫時無法支持 Greys是一個JVM進程執行過程中的異常診斷工具,可以在不中斷程序執行的情況下輕松完成問題排查工作。和HouseMD一樣,Greys-Anatomy取名同名美劇“實習醫生格蕾”,目的是向前輩致敬。代碼編寫的時候參考了BTrace和HouseMD兩個前輩的思路。 使用greys對java程序進行運行時跟蹤(不傳參數,需要先greys -C pid,再greys)。支持的操作有: 查看加載類,方法信息 查看JVM當前基礎信息 方法執行監控(調用量,失敗率,響應時間等) 方法執行數據觀測、記錄與回放(參數,返回結果,異常信息等) 方法調用追蹤渲染 詳細信息請參考: https://github.com/oldmanpushcart/greys-anatomy/wiki # `sjksjk --commands sjk --help` 使用sjk對Java診斷、性能排查、優化工具 * ttop:監控指定jvm進程的各個線程的cpu使用情況 * jps: 強化版 * hh: jmap -histo強化版 * gc: 實時報告垃圾回收信息 * 更多信息請參考: https://github.com/aragozin/jvm-tools
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看