如何使用Arthas查看类变量值

article/2025/9/13 7:31:07

使用arthas查看类变量值核心思路是:通过实现ApplicationContextAware接口定义ApplicationUtil类,该类可以获取ApplicationContext的所有的Bean实例,然后通过arthas的ognl查看类实例中的属性值。

搭建简易Spring Boot工程

1. pom依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>zqh.test</groupId><artifactId>SpringBootTest</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.19.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

2. Spring Boot 启动类

package com.zqh.main;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author fangchen* @date 2022-01-08 14:33*/
@SpringBootApplication(scanBasePackages = {"com.zqh.bean"})
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

3. 实现 ApplicationContextAware 接口的工具类

package com.zqh.bean;import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;/*** @author fangchen* @date 2022-01-08 14:49*/
@Component
public class ApplicationUtil implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext args) throws BeansException {applicationContext = args;}public static Object getBean(String beanName) {return applicationContext.getBean(beanName);}
}

4. 查看目标类

package com.zqh.bean;import org.springframework.stereotype.Component;/*** @author fangchen* @date 2022-01-08 14:35*/
@Component("testBean")
public class TestBean {private int a = 9;private String str = "this is bboy zqh!";
}

使用Arthas查看类变量值

1. 启动 Spring Boot 中的 main 方法

运行Application类,启动成功日志:

 

2. 下载并启动arthas

# 下载arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar# 启动arthas,并找到相应进程,选择,这里是第一个
java -jar arthas-boot.jar[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 71175 com.zqh.main.Application[2]: 70851 /Users/zhuqiuhui/.flow/resources/player.jar[3]: 70850 /Users/zhuqiuhui/.flow/resources/kafka.jar[4]: 70852 /Users/zhuqiuhui/.flow/resources/webapp.jar[5]: 71174 org.jetbrains.jps.cmdline.Launcher[6]: 36375[7]: 68267 /Users/zhuqiuhui/.flow/resources/kafka.jar[8]: 70861 org.jetbrains.idea.maven.server.RemoteMavenServer[9]: 70732

3. 使用arthas查看类变量值

[arthas@71175]$ ognl '@com.zqh.bean.ApplicationUtil@getBean("testBean").a'
@Integer[9][arthas@71175]$ ognl '@com.zqh.bean.ApplicationUtil@getBean("testBean").str'
@String[this is bboy zqh!]

欢迎关注微信公众号:方辰的博客

 


http://chatgpt.dhexx.cn/article/xkM2Gc9i.shtml

相关文章

类变量(静态变量),静态方法(类方法)快速了解一篇足矣

什么是类变量&#xff1f; 类变量也叫静态变量&#xff0c;静态属性&#xff0c;是该类所有对象共享的变量&#xff0c;任何一个该类的对象去访问他时&#xff0c;取到的值都是相同的值&#xff0c;同样任何一个该类对象 去修改他时&#xff0c;修改的也是同一个变量。 如何定…

VS 关于 .sln 文件和 .suo 文件

Visual Studio.NET采用两种文件类型&#xff08;.sln和.suo&#xff09;来存储特定于解决方案的设置,它们总称为解决方案文件。为解决方案资源管理器提供显示管理文件的图形接口所需的信息&#xff0c;从而在每次继续开发任务时&#xff0c;不会因开发环境而分散精力&#xff1…

Linux命令ln -snf给文件创建软链接和硬链接

我们知道 ln 命令用于创建链接文件,ln命令的参数选项有很多,此处主要理解 -snf三个: -s:--symbolic比较容易,有-s时表示创建软连接,没有-s时,表示创建硬链接 -f:--force 强行删除任何已存在的目标文件 -n:--no-dereference 把符号链接的文件视为一般文件 一、创建软链…

Visual studio中.sln、.ncb、.rc、.sdf、.def、.vcproj等后缀文件解释

.sln 解决方案文件 Visual Studio使用解决方案文件(后缀为sln的文件)表示一个项目组&#xff0c;它通常包含一个项目中所有的工程文件信息。 .ncb 无编译浏览文件 无编译浏览文件&#xff1a;其中存放了供ClassView、WizardBar和Component Gallery使用的信息&#xff0c;由VC开…

凸函数的性质、判定,凸规划

一. 凸函数的性质 二. 凸函数的判别 判断一个函数是否为凸函数&#xff0c;最基本的方法是使用其定义。 对可微函数&#xff1a; 三、凸规划定义 最优化问题的目标函数为凸函数&#xff0c;不等式约束函数也为凸函数&#xff0c;等式约束函数是仿射的&#xff0c;则称该最优化问…

不等式约束问题-KKT条件 (1)

允许不等式约束的KKT条件&#xff08;卡罗需-库恩-塔克条件&#xff0c;Karush-Kuhn-Tucker Conditions&#xff0c;有时称为一阶必要条件&#xff09;是对只允许等式约束的拉格朗日乘数法的推广。 定义一个优化问题如下&#xff0c;该最优问题既有等式约束&#xff0c;又有不…

《统计学习方法》—— SVM(线性可分支持向量机、线性支持向量机、非线性支持向量机)的详细推导

前言 支持向量机是定义在特征空间上使得间隔最大的线性分类器。它可以形式化为凸二次规划问题。对于这样的凸二次规划问题&#xff0c;我们往往使用拉格朗日方法转为为它的对偶问题。对于这样的对偶问题&#xff0c;我们可以使用SMO最小序列算法进行求解。 我们将介绍三种支持…

深度学习核心技术精讲100篇(十三)-线性可分支持向量机中KKT最有条件理解

前言 KKT最优化条件是Karush[1939],以及Kuhn和Tucker[1951]先后独立发表出來的。这组最优化条件在Kuhn和Tucker发表之后才逐渐受到重视,因此许多情况下只记载成库恩塔克条件(Kuhn-Tucker conditions) 库恩塔克条件(Kuhn-Tucker conditions)是非线性规划领域里最重要的理论…

拉格朗日函数对偶问题、KKT条件

一、概念介绍 KKT最优化条件是Karush(1939)以及Kuhn和Tucker(1951)先后独立发表出来的&#xff0c;但在Kuhn和Tucker发表之后才逐渐受到重视&#xff0c;因此多数情况下记载成库恩-塔克条件(Kuhn-Tucker conditions)。先介绍几个优化的概念。 1.1 优化 最优化问题&#xff0…

西工大机考《 现代设计方法》大作业网考

???202110?? 试卷总分:100 得分:96 一、 单选题 (共 40 道试题,共 80 分) 1.Powell改进算法是一种( )。 A.一维搜索方法 B.处理约束问题的优化方法 C.利用海森矩阵求解的无约束优化方法 D.利用梯度求解的无约束优化方法 2.下列特性中,梯度法不具有的是( )。 A.二次收…

拉格朗日乘子法和KKT 条件解析

1.最优化问题 拉格朗日乘子法和KKT条件是求解最优化问题的重要方法&#xff0c;因此&#xff0c;在正式讲解二者之前&#xff0c;要先谈一谈最优化问题。 通常&#xff0c;需要求解的最优化问题分为3类&#xff1a; 1.1. 无约束优化问题: 对于此类问题&#xff0c;可以通…

直观理解拉格朗日乘子法和Karush-Kuhn-Tucker(KKT)条件

在最优化问题中&#xff0c;经常是会有约束条件的&#xff0c;而约束条件可分为等式约束条件和不等式约束条件&#xff0c;对于前者&#xff0c;我们有拉格朗日乘子法&#xff0c;对于后者&#xff0c;有KKT条件&#xff0c;对于既有等式约束又有不等式约束的最优化问题&#x…

非线性优化问题处理技术(二) Karush–Kuhn–Tucker条件

对于只有等式约束的非线性优化问题&#xff0c;拉格朗日定理是可以适用的&#xff0c;但是当存在不等式约束时就不适用了&#xff0c;此时Karush–Kuhn–Tucker(KKT)条件是更为通用的处理技术&#xff0c;拉格朗日定理其实只是KKT条件定理的特殊情况。 KKT条件一开始称为Kuhn–…

支持向量机SVM(二)

6 拉格朗日对偶&#xff08;Lagrange duality&#xff09; 先抛开上面的二次规划问题&#xff0c;先来看看存在等式约束的极值问题求法&#xff0c;比如下面的最优化问题&#xff1a; 目标函数是f(w)&#xff0c;下面是等式约束。通常解法是引入拉格朗日算子&#xff0c;这里使…

2012年全国卷导数题与含约束的多元函数极值问题(KKT条件)

这道题目编的比较好&#xff0c;第一问就构造的特别巧妙 &#xff08;1&#xff09; f(x) f‘(1)e^(x-1) - f(0) x f(1) f(1) - f(0) 1, f(0)1 f(x) f(1)e^(x-1) - f(0)x 1/2x^2 …

运筹学教学|动态规划例题分析(一)

例题1&#xff1a; 问题描述 假设桌子上有n根火柴&#xff0c;我先手取1&#xff0c;2,…,k(k<n)根火柴&#xff0c;之后我的对手也必须取1&#xff0c;2&#xff0c;…k根火柴。双方轮换重复直到最后一根火柴被捡起来。最后一个捡起来火柴的人是输家&#xff0c;那么&…

对约束条件优化问题的理解

以二维空间 R^2 举例 无约束的优化问题注意我在图里画了等高线。此时 在局部极小值点 处的梯度必然为0&#xff0c;比较容易理解。这个梯度为零的条件是局部极小值点的必要条件。这样&#xff0c;优化问题的求解变成了对该必要条件解方程组。 2.带等式约束的优化问题, 与无约束…

数学建模 非线性规划

一.非线性规划模型 1.概念: 如果目标函数或约束条件中包含非线性函数,就称该规划问题为非线性规划问题.一般来说,求解非线性规划问题要比求解线性规划问题困难得多,也不像线性规划问题那样有单纯形法这一通用方法,各个方法都有自己的适用范围 注意:如果线性规划的最优解存在,则…

博弈论中的Stackelberg模型和库恩塔克条件如何通过Matlab求解或者数值分析?

博弈论中的Stackelberg模型和库恩塔克条件如何通过Matlab求解或者数值分析&#xff1f; 下面是两个供应链成员的利润函数&#xff0c;其中p_c和p_b为决策变量&#xff0c;其余参数均在[0,1]之间。此外&#xff0c;b为领导者&#xff0c;c为跟随者。按照逆向归纳法求解可以得到…

拉格朗日乘子库恩塔克条件

拉格朗日乘子法的证明 在学习支持向量机的时候&#xff0c;计算对偶问题时用到了拉格朗日乘子法((Lagrange multiplier method))&#xff0c;回想起高中时使用拉格朗日乘子法求不等式约束条件下的最优化问题时的困惑&#xff0c;虽然一直知道用&#xff0c;但是却不知道为什么…