使用反射遍历程序中的每个对象

时间:2017-07-27 22:44:21

标签: java reflection

我想为许多不同的类编写成本分析方法,这些类可以计算某些对象的创建次数。简单的方法是在构造函数中为每个变量增加一个变量,但我想知道是否可以使用反射来浏览当前使用的每个对象?

2 个答案:

答案 0 :(得分:2)

以下是两种方法:

  1. 将一个java代理安装到JVM中,这可以执行监视对象创建等工作
  2. 创建自己的类加载器,可以将实际的对象创建工作委托给默认的类加载器,但也可以在创建对象时对其进行计数。
  3. 这两种解决方案都不是特别容易实现。

    我会选择 java代理,因为它不需要对应用程序代码进行任何更改 - 而是在运行时注入到JVM中。

    编辑:或者,学习使用Java Profiler VisualVM

答案 1 :(得分:0)

在快照和实例化总数中获得此功能的一种非常简单的方法是使用分析器(我们使用YourKit)。它将为您提供每个班级的总计数。

我认为他们有一个演示,所以你可以在大约5分钟内得到你想要的数据。