• 线上jvm调试命令小结


    进程信息
    jps
    jps -l 输出应用程序main.class的完整package名或者应用程序jar文件完整路径名
    jps -v 输出传递给JVM的参数

    查看正在运行的java程序的扩展参数
    jinfo 16439

    线程信息
    jstack

    更多
    https://www.cnblogs.com/duanxz/p/5487576.html

    查看堆使用情况 ## 常用 ##
    jmap -heap pid:
    jmap -heap 16439

    查看类实例内存使用情况 ## 常用 ##
    jcmd pid GC.class_histogram

    jcmd 16439 GC.class_histogram
    jcmd 16439 GC.class_histogram | more

    jmap -histo 16439

    jcmd参数含义:

    • Thread.print, 打印线程栈信息
    • GC.class_histogram, 查看系统中类统计信息
    • GC.heap_dump, 导出堆信息,与jmap -dump功能一样
    • GC.run_finalization, 触发finalize()
    • GC.run, 触发gc()
    • VM.uptime, VM启动时间
    • VM.flags, 获取JVM启动参数
    • VM.system_properties, 获取系统Properties
    • VM.command_line, 启动时命令行指定的参数

    实时监控jvm
    jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
    vmid - VM的进程号,即当前运行的java进程号。
    还有两个关于显示频率的选项:
    interval–间隔时间,单位可以是秒或者毫秒,通过指定s或ms确定,默认单位为毫秒。
    count-打印次数,如果缺省则打印无数次。

    JVM中堆的垃圾收集情况
    jstat -gc 16439 5s 10

    新生代、老生代及持久代垃圾收集的情况
    jstat -gcutil 16439 5s 10
    更多
    https://www.cnblogs.com/duanxz/archive/2012/11/03/2752166.html

    堆转储 ## 常用 ##

    手动转储
    jcmd 16439 GC.heap_dump /usr/app/mock_dump.hprof

    jcmd 16439 GC.heap_dump /usr/app/mock_dump.hprof

    自动转储
    OutOfMemoryError是不可预料的,我们很难确定应该何时获得堆转储。有几个JVM标志可以起到帮助。

    -XX:+HeapDumpOnOutOfMemoryError该标志默认为false,打开该标志,JVM会在抛出OutOfMemoryError时创建堆转储。

    -XX:HeapDumpPath=<path>该标志知道了堆转储将被写入的位置,默认为当前工作目录下生产java_pid<pid>.hprof文件。

    -XX:+HeapDumpAfterFullGC 这会在运行一次Full GC后生成一个堆转储文件。

    -XX:+HeapDumpBeforeFullGC 这会在运行一次Full GC之前生成一个堆转储文件。

    例子:
    nohup java -Xms2048M -Xmx4096M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./ -jar mock.jar &


    堆转储文件分析工具 ## 常用 ##
    推荐Java VisualVM、mat
    更多
    https://www.cnblogs.com/happy-rabbit/p/6232581.html

  • 相关阅读:
    git remote: Support for password authentication was removed on August 13, 2021
    win10 安装vue 详解包括node.js、npm、webpack
    solr window 安装与启动
    solr 创建 core
    idea 创建 springboot 模块报错解决
    c# 设计模式篇
    javascript(DHTML)代码和客户端应用程序代码之间实现双向通信.
    委托,匿名方法,Lambda 表达式 的关系
    使用泛型实现单例模式提供者
    asp.net 文件编码问题
  • 原文地址:https://www.cnblogs.com/starcrm/p/13940849.html
Copyright © 2020-2023  润新知