【问题标题】:Java: monitor static fields stateJava:监控静态字段状态
【发布时间】:2015-02-20 11:09:10
【问题描述】:

我有一个 JVM 正在运行。对于时间 t0 和 t1 的 2 个不同时刻,我想知道所有类的所有静态字段的值在 t1 与 t0 时如何变化。

我想到的解决方案:

  1. 监控/调试/分析所有静态字段的写入权限。
  2. 比较在 t0 和 t1 拍摄的 2 个内存快照,以找出字段值的差异。我可以访问 Java VisualVM 和 YourKit 分析器。

我无法找到上述任何一个的答案。

如果可能,实现我的目标的最佳方式是什么?

【问题讨论】:

  • 你也可以实现一个 jmx bean,它公开你需要的值。
  • 你到底想在这里完成什么?这听起来像是一个 XY 问题。

标签: java jvisualvm


【解决方案1】:

使用 java 调试器,您应该能够在字段的值上设置断点,以便调试器在值更改时中断。例如。 Eclipse java调试器就有这样的功能(右键字段,选择“toggle breakpoint”)。

编辑:如果您想要更多控制(例如程序控制),您可以使用Btrace 脚本运行您的程序。这些是使用非常简化的 API 的普通 Java 程序,并且与 JVM 挂钩。

【讨论】:

  • IDE 调试器是我首先尝试的最明显的东西。但是,您需要指定要监视的类和字段的名称。就我而言,我想监视所有类的所有静态字段,这就是为什么我无法手动创建所有必要的断点。
猜你喜欢
  • 2013-12-22
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多