<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    8款 JDK 自帶的監控和故障處理工具,定位問題太方便了!

    VSole2023-01-31 10:15:53

    jdk本身為我們定位java相關的生產問題提供了內置的工具,這些內置的工具用好了足以應對常見的大多數生產問題,這篇就將jdk自帶命令行和可視化工具做一下匯總介紹。

    jps–虛擬機進程查看工具

    類似于ps命令,輸出虛擬機進程信息,第一列為LVMID跟pid是一致的。

    jstat–虛擬機統計監視工具

    虛擬機統計信息監視工具,監視虛擬機各種運行狀態比如GC的統計信息。

    比如:每250毫秒查詢一次進程垃圾收集狀況,一共查詢20次。

    #格式:jstat [option]  lvmid  interval  count
    $jstat -gc 17936  250 20
    

    解釋:

    • 「C:」 容量
    • 「U:」 使用量
    • 「E:」 eden區
    • 「O:」 老年代
    • 「M:」 元數據區
    • 「YGC:」 YoungGC次數
    • 「YGCT:」 YoungGC花費總時間
    • 「FGC:」 FullGC次數
    • 「FGCT:」 FullGC花費總時間

    jinfo–虛擬機配置信息工具

    實時查看和調整虛擬機各項參數

    比如:查看進程17936的System.properties()信息

    jinfo -sysprops  17936  
    

    查看老年代觸發gc百分比

    $jinfo -flag CMSInitiatingOccupancyFraction 17936
    

    jmap–虛擬機內存映象工具

    jmap命令用于生成heapdump文件,也就是“堆轉儲快照”。

    其他方式如:-XX:HeapDumpOnOutOfMemoryError或者kill -3 pid

     # 給進程為17936生成dump二進制文件,名稱為jeffdump.bin
       $jmap -dump:format=b,file=jeffdump.bin 17936
    # 打印
     C:\Users\Administrator>jmap -dump:format=b,file=jeffdump.bin 17936
     Dumping heap to C:\Users\Administrator\jeffdump.bin ...
     Heap dump file created
    

    jhat–虛擬機HeapDump分析工具

    jhat內置了一個微型的http/html服務器,生成dump文件的分析結果后,可以在瀏覽器中查看。

    一般不會再服務器上直接用jhat分析dump,畢竟耗時耗資源,而且jhat分析功能簡陋,一般可以用VisualVM或者Eclipse Memory Analyzer。

    $jhat jeffdump.bin
    C:\Users\Administrator>jhat jeffdump.bin
    Reading from jeffdump.bin...
    Dump file created Wed Apr 29 17:30:48 CST 2020
    Snapshot read, resolving...
    Resolving 1831310 objects...
    Chasing references, expect 366 dots.............
    ................................................
    ................................................
    ................................................
    .....................................
    Eliminating duplicate references................
    ................................................
    ................................................
    ................................................
    ..................................
    Snapshot resolved.
    Started HTTP server on port 7000
    Server is ready.
    

    打開瀏覽器:http://localhost:7000/

    分析內存泄露問題主要使用到Heap Histogram,可以找到內存中總容量最大的對象

    jstack–java堆棧跟蹤工具

    生成虛擬機當前時刻的線程快照,即threaddump或者javacore文件。也就是當前虛擬機每一條線程正在執行的方法堆棧集合,可以用來定位線程長時間停頓的原因,比如線程間死鎖、死循環、請求外部資源導致的長時間等待。

    $jstack -l 17936
    

    Jconsole和VisualVM

    • jconsole和visualVM 是jdk提供的兩個可視化監控工具。VisualVm是jdk發布的功能最強大的運行監視和故障處理工具。比專業收費的Jprofiler、youkit都不遜色多少。
    • VisualGC: 非jdk自帶的工具,IDEA也有插件可以安裝。
    • jmc:BEA公司JDK帶的工具。需要裝oracle的jdk才有。生產環境不建議使用,太重可能干擾線上服務。

    visualVM分析OutOfMemoryError異常

    • 對于CMS收集器來說,如果超過98%的時間都在GC,而只有不足2%的內存恢復,則會拋出OOM:GC overhead limit exceeded。不過可以設置-XX:-UseGCOverheadLimit關閉這個異常的拋出。不過仍然可能會拋出OOM:Java Heap sapce異常!或者OOM:unable to creare new native thread.
    • 使用jdk自帶的工具java VisualVM來分析
    -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
    

    生成的java_pid9516.hprof文件,也可以使用Eclipse Memory Analyzer打開。

    虛擬機jdk
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    jdk本身為我們定位java相關的生產問題提供了內置的工具,這些內置的工具用好了足以應對常見的大多數生產問題,這篇就將jdk自帶命令行和可視化工具做一下匯總介紹。jps–虛擬機進程查看工具類似于ps命令,輸出虛擬機進程信息,第一列為LVMID跟pid是一致的。jstat–虛擬機統計監視工具虛擬機統計信息監視工具,監視虛擬機各種運行狀態比如GC的統計信息。比如:每250毫秒查詢一次進程垃圾收集狀況,一共查詢20次。
    最近在分析JDK7u21反序列化漏洞,對命令執行載體com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl的利用點不太明白。
    Java 8 的內存結構
    2022-03-10 14:37:13
    java8內存結構圖虛擬機內存與本地內存的區別Java虛擬機在執行的時候會把管理的內存分配成不同的區域,這些
    RMI存在著三個主體RMI RegistryRMI ClientRMI Server
    安卓工具總結
    2021-10-14 08:39:34
    JRE:Java Runtime Environment是Java運行時環境,包含了java虛擬機,java基礎類庫安裝過程:1)雙擊啟動安裝程序2)默認安裝路徑3)jre路徑選擇4)配置環境變量JAVA_HOME. 這里介紹幾款不錯的安卓模擬器。
    'User Portal' 及 'Webadmin' 兩個接口存在認證繞過漏洞,漏洞巧妙利用了 Java 和 Perl 處理解析 JSON 數據的差異性,實現了變量覆蓋,從而導致認證繞過及命令執行。
    Jboss是一個基于J2EE的開放源代碼的應用服務器。JBoss代碼遵循LGPL許可,可以在任何商業應用中免費使用。JBoss是一個管理EJB的容器和服務器,支持EJB 1.1、EJB 2.0和EJB3的規范。但JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。
    C:\Users\bk\Desktop\天府科技云APP\天府科技云服務平臺\天府科技云服務平臺.apkC:\Program Files\Java\jdk1.8.0_111\bin\jarsigner.exe?文件將解壓出來的classes.dex文件拷貝到dex2jar工具文件夾中執行命令:d2j-dex2jar classes.dex執行完畢后,得到反編譯而來的classes-dex2jar.jar文件使用jd-gui.exe或者luyten-0.5.4打開 classes-dex2jar.jar文件,得到360安全加固混淆加密的源代碼。應同時使用V1+V2簽名)6.應用完整性校檢將反編譯出來源碼中修改圖片文件名為test.png進行重新生成apk包,命令如下:java -jar apktool.jar b -f?
    堆區分為兩大區:Young區和Old區,又稱新生代和老年代。在不同的JVM實現及不同的回收機制中,堆內存的劃分方式是不一樣的。相對于基于寄存器的運行環境來說,JVM是基于棧結構的運行環境。在活動線程中,只有位于棧頂的幀才是有效的,稱為當前棧幀。正在執行的方法稱為當前方法,棧幀是方法運行的基本結構。在執行引擎運行時,所有指令都只能針對當前棧幀進行操作。而StackOverflowError表示請求的棧溢出,導致內存耗盡,通常出現在遞歸方法中。
    一、遠程 Debug 原理首先,Java程序的執行過程分為以下幾個步驟:Java的文件 > 編譯生成的類文件
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类