jvm相关

简介: 本节介绍Arthas常用命令:实时监控系统数据(dashboard)、查看JVM线程、内存、系统属性(sysprop)、环境变量(sysenv)、性能计数器(perfcounter)、日志配置(logger)及静态属性(getstatic)等,支持动态修改与诊断,助力Java应用排查问题。

dashboard—当前系统的实时数据面板
第二章节已说,这里不再赘述

  1. thread—查看当前 JVM 的线程堆栈信息
    第二章节已说,这里不再赘述
  2. jvm—查看当前 JVM 的信息
  3. sysprop—查看和修改JVM的系统属性
    4.1 查看全部
    4.2 查看指定属性
    4.3 修改单个属性
  4. sysenv—查看JVM的环境变量
    5.1 查看全部环境变量
    5.2 查看指定环境变量
  5. vmoption—查看和修改JVM里诊断相关的option
    6.1 查看全部option
    6.2 查看指定option
    6.3 更新指定option
  6. perfcounter—查看当前 JVM 的Perf Counter信息使用参考
    可以用-d参数打印更多信息:
    jdk9以上的应用
    如果没有打印出信息,应用在启动时,加下面的参数:
  7. logger—查看和修改logger
    8.1 查看所有logger信息
    从appenders的信息里,可以看到
    CONSOLE logger的target是System.out
    APPLICATION logger是RollingFileAppender,它的file是app.log
    ASYNC它的appenderRef是APPLICATION,即异步输出到文件里
    8.2 查看指定logger
    8.3 查看指定classloader的logger
    其中,classloader为上述8.1或8.2中返回的
    8.4 更新全局logger level
    8.5 更新指定classloader logger level
    默认情况下,logger命令会在SystemClassloader下执行,如果应用是传统的war应用,或者spring boot fat jar启动的应用,那么需要指定classloader。
    可以先用 sc -d yourClassName 来查看具体的 classloader hashcode,然后在更新level时指定classloader:
    8.6 查看没有appender的logger
    默认情况下,logger命令只打印有appender的logger的信息。如果想查看没有appender的logger的信息,可以加上参数--include-no-appender。
    注意,通常输出结果会很长
    Java
    运行代码
    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    [arthas@2062]$ logger --include-no-appender
    name ROOT
    class ch.qos.logback.classic.Logger
    classLoader sun.misc.Launcher$AppClassLoader@2a139a55
    classLoaderHash 2a139a55
    level DEBUG
    effectiveLevel DEBUG
    additivity true
    codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    appenders name CONSOLE

                                     class           ch.qos.logback.core.ConsoleAppender
                                     classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                     classLoaderHash 2a139a55
                                     target          System.out
                                     name            APPLICATION
                                     class           ch.qos.logback.core.rolling.RollingFileAppender
                                     classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                     classLoaderHash 2a139a55
                                     file            app.log
                                     name            ASYNC
                                     class           ch.qos.logback.classic.AsyncAppender
                                     classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                     classLoaderHash 2a139a55
                                     appenderRef     [APPLICATION]
    

    name com
    class ch.qos.logback.classic.Logger
    classLoader sun.misc.Launcher$AppClassLoader@2a139a55
    classLoaderHash 2a139a55
    level null
    effectiveLevel DEBUG
    additivity true
    codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar

    name com.alibaba
    class ch.qos.logback.classic.Logger
    classLoader sun.misc.Launcher$AppClassLoader@2a139a55
    classLoaderHash 2a139a55
    level null
    effectiveLevel DEBUG
    additivity true
    codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    ...

  8. getstatic—查看类的静态属性
    有需再更
  9. ognl—执行ognl表达式
    有需再更
  10. mbean—查看 Mbean 的信息
    有需再更
  11. heapdump—dump java heap, 类似jmap命令的heap dump功能
相关文章
|
8天前
|
数据采集 存储 安全
跨境系统安全加固:接口防刷、数据加密、订单风控全方案
本文针对跨境反向海淘系统高危公开接口多、敏感数据多、安全防护薄弱等问题,基于Laravel实战,提出轻量化、可落地的四维安全加固方案:IP+接口级限流防刷、敏感字段对称加密存储、多维度智能交易风控、全链路操作日志审计,兼顾合规性与业务稳定性。
130 1
|
6月前
|
jenkins 持续交付 调度
项目《神领物流》
本项目为自研物流系统,基于微服务架构实现智能调度与管控,涵盖用户、快递员、司机多端应用。采用GitFlow管理代码,通过Jenkins实现持续集成,提交后自动构建,保障开发效率与系统稳定,类似顺丰速运模式,面向C端提供高效快递服务。(239字)
|
6月前
|
设计模式 Java 程序员
推荐书籍
推荐多本Java经典书籍:《Head First Java》适合入门,《Java核心技术》深入巩固基础,《Java编程思想》整合设计模式,适合进阶。并发方面有《Java并发编程之美》等,JVM推荐《深入理解Java虚拟机》与《实战JVM》。体系全面,适合不同阶段学习。
|
6月前
|
负载均衡 算法 Java
微服务篇
SpringBoot核心原理是自动装配,通过@SpringBootApplication注解实现配置类、组件扫描与自动配置。其启动流程包括环境初始化、上下文创建与自动化配置。常用起步依赖如web、redis等;支持properties、YAML等配置文件,后加载的覆盖先加载的。项目通过Feign、Ribbon实现服务通信与负载均衡,使用Nacos做注册与配置中心,Sentinel或Hystrix实现限流熔断,Gateway实现网关限流与CORS跨域控制,结合Spring Cloud五大组件构建微服务架构。
|
6月前
|
缓存 开发工具 git
QLExpress使用及源码分析
QLExpress是阿里开源的轻量级规则引擎,支持通过注解与YAML配置实现业务逻辑与代码解耦。结合实体别名、接口规则定义及脚本化表达式,实现动态计算与判断,如用户年龄判断、BMI计算等。支持AST语法树解析与上下文绑定,提供灵活的二次扩展能力,适用于复杂业务场景的延迟执行与缓存优化。
|
6月前
|
缓存 Java 数据库连接
常见配置
本文介绍MyBatis核心配置机制,涵盖属性加载优先级(方法参数 > resource/url > properties内嵌)、关键配置项如缓存、延迟加载、执行器类型等,并详解多环境配置方式及事务管理(JDBC与MANAGED)。适用于需掌握MyBatis配置优先级与多数据源管理的开发者。
|
6月前
|
Java 测试技术 Linux
生产环境发布管理
本文介绍大型团队如何通过自动化部署平台实现多环境(dev→test→pre→prod)高效发布,涵盖各环境职责、CI/CD流程、分支管理、一键发布及基于Skywalking的日志链路追踪,提升发布效率与系统稳定性。
|
6月前
|
运维 Devops 开发工具
生产环境缺陷管理
在大型团队中,多分支开发易导致bug漏修、漏发,引发严重生产事故。我们基于go-git打造通用化工具git-poison,实现bug的分布式追溯与管理,支持投毒、解毒、银针三步卡点,自动阻塞带缺陷版本发布,降低协同成本,提升发布安全性,已在实际流程中稳定运行一年以上。
|
6月前
|
存储 缓存 安全
One Trick Per Day
初始化Map应避免容量设置不当,推荐使用Guava的`newHashMapWithExpectedSize`或手动计算初始容量。禁止使用`Executors`创建线程池,易因无界队列或过多线程引发OOM,应显式使用`ThreadPoolExecutor`并合理配置参数。`Arrays.asList`返回不可变列表,不支持增删操作,且与原数组共享数据。遍历Map时优先使用`entrySet`提升性能,JDK8可用`forEach`。`SimpleDateFormat`非线程安全,建议用`ThreadLocal`隔离或改用Java 8时间API。并发修改记录需加锁,推荐乐观锁(version控制)
|
6月前
|
Java 应用服务中间件 网络安全
Eclipse运行SSM/SSH项目教程
本文介绍了Eclipse开发环境的搭建与项目部署流程,涵盖JDK、Tomcat等基础软件安装配置,项目导入(支持普通及Maven项目),Eclipse中绑定Tomcat并部署项目,以及常见问题如数据库连接信息未修改的处理方法,助你快速启动Java Web项目。

热门文章

最新文章