zoukankan      html  css  js  c++  java
  • java常用且很有用的问题排查工具(持续完善)

    因为用的频率不是很多,老忘掉,每次都要搜下,特记录下备忘。

    API查看内存情况,比Runtime更靠谱。

    MemoryMXBean mxb = ManagementFactory.getMemoryMXBean();
    System.out.println(mxb.getHeapMemoryUsage());

    dump堆

     jmap -dump:file=abc.hprof 86848

     ibm openj9的dump选项可参见openj9-docs-0.17.0/xdump.html,它同时包含堆、栈及其它。

    查看进程的启动jvm选项

    [root@iZ23nn1p4mjZ ~]# jinfo -flags 16603
    Attaching to process ID 16603, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.73-b02
    Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=262144000 -XX:MaxHeapSize=4181721088 -XX:MaxNewSize=1393557504 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=87031808 -XX:OldSize=175112192 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC

    查看当前类实例汇总情况

    [root@iZbp112kwadw1qt8emked5Z logs]# jmap -histo 21094 | more
    
     num     #instances         #bytes  class name
    ----------------------------------------------
       1:         61677       41842184  [B
       2:         41937       38583528  [I
       3:        300394       22331688  [C
       4:        351629       11252128  java.util.HashMap$Node
       5:        248197        5956728  java.lang.String
       6:         24685        3225536  [Ljava.util.HashMap$Node;
       7:         74766        2990640  java.math.BigDecimal
       8:         25328        1979288  [Ljava.lang.Object;
       9:         40762        1956576  java.nio.HeapByteBuffer
      10:         40616        1949568  java.nio.HeapCharBuffer
      11:         16747        1473736  java.lang.reflect.Method
      12:         28706        1377888  java.util.HashMap
      13:          8328        1199232  com.mysql.jdbc.Field
      14:         17546         701840  java.math.BigInteger
      15:          5746         642584  java.lang.Class
      16:         34436         550976  java.lang.Integer
      17:         16899         540768  java.lang.ref.WeakReference
      18:          2538         534344  [Z
      19:         10095         403800  java.util.TreeMap$Entry
      20:          2045         359920  com.mysql.jdbc.JDBC42ResultSet
      21:         11216         358912  java.util.concurrent.ConcurrentHashMap$Node

    命令行运行jar应用

    java -cp .;c:classesmyClass.jar;d:classesA.jar;...(列出完整依赖jar) packname.mainclassname

    -Xbootclasspath是早期1.2版本jdk的选项,http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4279459

    -cp/classpath不支持模糊匹配

    -jar 和-cp相互排斥

    打印关键jvm关键调试信息 

    参数及其默认值 描述
    -XX:-CITime 打印消耗在JIT编译的时间
    -XX:ErrorFile=./hs_err_pid<pid>.log 保存错误日志或者数据到文件中
     -XX:+MaxFDLimit  最大化文件描述符的数量限制
    -XX:HeapDumpPath=./java_pid<pid>.hprof 指定导出堆信息时的路径或文件名
    -XX:-HeapDumpOnOutOfMemoryError 当首次遭遇OOM时导出此时堆中相关信息
       
    -XX:OnOutOfMemoryError="<cmd args>;<cmd args>" 当首次遭遇OOM时执行自定义命令
    -XX:-PrintClassHistogram 遇到Ctrl-Break后打印类实例的柱状信息,
    与jmap -histo功能相同
    -XX:-PrintConcurrentLocks 遇到Ctrl-Break后打印并发锁的相关信息,
    与jstack -l功能相同
    -XX:-PrintCommandLineFlags 打印在命令行中出现过的标记
    -XX:-PrintCompilation 当一个方法被编译时打印相关信息
    -XX:-PrintGC 每次GC时打印相关信息
    -XX:-PrintGC Details 每次GC时打印详细信息
    -XX:-PrintGCTimeStamps 打印每次GC的时间戳
    -XX:-TraceClassLoading 跟踪类的加载信息
    -XX:-TraceClassLoadingPreorder 跟踪被引用到的所有类的加载信息
    -XX:-TraceClassResolution 跟踪常量池
    -XX:-TraceClassUnloading 跟踪类的卸载信息
    -XX:-TraceLoaderConstraints 跟踪类加载器约束的相关信息
  • 相关阅读:
    .netCore+Vue 搭建的简捷开发框架 (5)
    .netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础 -2
    Vue 学习笔记
    .netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础
    .netCore+Vue 搭建的简捷开发框架 (3)-- Services层实现
    .netCore+Vue 搭建的简捷开发框架 (2)--仓储层实现和EFCore 的使用
    .netCore+Vue 搭建的简捷开发框架
    在线.net C#和vb.net 语言互转
    VB.net 通过句柄操作其他窗口
    vb.net 多线程爬虫抓取免费代理IP
  • 原文地址:https://www.cnblogs.com/zhjh256/p/6525042.html
Copyright © 2011-2022 走看看