怎么用arthas查看对象属性
时间: 2023-11-08 07:23:30 AIGC 浏览: 648
1. 进入arthas命令行界面,执行`dashboard`命令查看当前JVM的进程信息和系统资源使用情况。
2. 执行`sc`命令查看所有已加载的类信息,找到要查看属性的对象所对应的类。
3. 执行`jad`命令反编译该类的字节码,查看类的源代码。
4. 执行`ognl`命令查看对象的属性值,语法为`ognl object.property`,例如:`ognl [email protected]`。
5. 如果属性值是集合类型,可以使用`ognl`命令的`size()`或`[#]`语法查看集合大小或指定索引的元素值,例如:`ognl [email protected]()`。
6. 如果需要在命令行中动态修改对象属性值,可以使用`set`命令,语法为`set object.property=value`,例如:`set [email protected]=Tom`。
7. 使用`monitor`命令监控对象属性的变化,语法为`monitor object.property`,例如:`monitor [email protected]`。
相关问题
arthas 查看对象的属性
在Arthas这个Java诊断工具中,你可以通过`trace-object`命令来查看对象的属性。这个命令让你能够追踪到特定对象的所有字段和它们的值。
要查看对象的属性,执行以下步骤[^4]:
```shell
trace-object <object-ref> -p <pid> [-t <thread-id>] [-l] [-v]
```
- `<object-ref>`: 是你要查询的对象引用,通常是一个类名加上内存地址,比如`com.example.MyClass@12345678`.
- `-p <pid>`: 指定进程ID,如果你有多个正在运行的Java应用,需要选择正确的PID.
- `-t <thread-id>`: 可选参数,指定线程ID,如果对象在多线程环境下,可以使用该选项定位到正确的上下文.
- `-l`: 显示详细信息,包括字段名称、类型、值以及访问路径.
- `-v`: 更高级别的调试模式,显示更多信息.
举个例子,假设我们有一个名为`myObject`的对象,我们可以这样操作[^4]:
```shell
trace-object com.example.MyClass@12345678 -p 12345
```
这将会显示`MyClass`实例在指定进程和线程中的属性及其值。
arthas查看老年代对象
### 使用 Arthas 查看 JVM 老年代对象
#### 启动 Arthas 并连接目标 Java 进程
要使用 Arthas 来监控和分析 JVM 中的老年代对象,首先需要启动 Arthas 并将其附加到目标 Java 应用程序上。通过命令 `./as.sh` 或者 Windows 上的 `.\as.bat` 文件可以启动 Arthas[^1]。
```bash
$ ./as.sh
```
输入对应的 PID(进程 ID),即可成功连接至指定的应用程序实例。
#### 使用 `heapdump` 命令获取堆转储文件
Arthas 提供了一个非常有用的命令叫做 `heapdump`,该命令能够导出整个堆的内容为 hprof 文件格式。此操作会生成一个包含当前 JVM 内存快照的大文件,其中也涵盖了老年代的数据结构信息。
```bash
heapdump /path/to/your/dumpfile.hprof
```
需要注意的是,执行 heap dump 操作可能会对正在运行的服务造成短暂影响,因此建议在低峰期进行此类诊断活动。
#### 利用 OQL 查询特定类型的对象
一旦拥有了完整的堆转储文件之后,就可以借助像 Eclipse MAT、VisualVM 等第三方工具来加载并解析这些数据。而在某些情况下,如果只是想快速了解某类对象的情况,则可以在 Arthas 中直接运用 Object Query Language (OQL) 对象查询语言来进行筛选:
```javascript
oql select * from instances 'com.example.YourClass'
```
这行指令将会返回所有属于 `YourClass` 类型的对象实例列表及其属性值,从而帮助定位那些位于老年代内的大对象或者是泄露源。
对于更深入地理解垃圾回收机制以及不同区域之间的转换关系,还可以查阅有关 Survivor 区域晋升阈值设置的相关资料[^5]。
阅读全文
相关推荐















