【问题标题】:How to find the instances of a class in Java Virtual Machine?如何在 Java 虚拟机中查找类的实例?
【发布时间】:2012-08-28 10:34:27
【问题描述】:

我想在一个大项目中测试其中一个类,但是我无法修改项目的任何文件(因此静态公共数组不是这种情况)。

除此之外,我只能初始化项目的框架(待测试),但再次没有对对象的引用。

我唯一拥有的是,我的测试类和框架运行在同一个 Java 虚拟机上。

因此,我想从我的测试类中访问单个类的实例。

如何在虚拟机中找到它们?

【问题讨论】:

    标签: java classloader virtual-machine


    【解决方案1】:

    您可以使用一些 aop 框架,例如 spring-aop,来跟踪每次创建对象的时间。

    【讨论】:

    • 您对他们跟踪这些对象的方法有任何想法吗?无论如何,我会检查它,谢谢
    • 参见:6.2.2。声明一个方面6.2.3。从link 声明一个切入点。您将在您检查的类(您需要研究的类)的构造函数上声明一个切入点,这样每次调用构造函数时都会调用方面方法。
    【解决方案2】:

    这里还有几个类似的问题,最好的答案似乎是这个:https://stackoverflow.com/a/1947200/1140456

    【讨论】:

      【解决方案3】:

      在 Java 中,您无法访问没有引用的对象。您需要有人更新框架以允许您直接或通过其他对象访问对象。

      【讨论】:

      • 我想应该有一些先进的——但可能效率低下的——技术来达到这些目标。因为 JVM 在运行时知道对象及其类。无论如何,谢谢。
      • 您也许可以通过 JVM 的调试接口破解某些东西,但这绝不是 Java 语言的一部分。原则上,如果您没有对它们的引用,对象甚至可能不存在。这就是自动垃圾收集背后的全部理念。
      猜你喜欢
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多