如何在 Java 虚拟机中查找类的实例?
Posted
技术标签:
【中文标题】如何在 Java 虚拟机中查找类的实例?【英文标题】:How to find the instances of a class in Java Virtual Machine? 【发布时间】:2012-08-28 10:34:27 【问题描述】:我想在一个大项目中测试其中一个类,但是我无法修改项目的任何文件(因此静态公共数组不是这种情况)。
除此之外,我只能初始化项目的框架(待测试),但再次没有对对象的引用。
我唯一拥有的是,我的测试类和框架运行在同一个 Java 虚拟机上。
因此,我想从我的测试类中访问单个类的实例。
如何在虚拟机中找到它们?
【问题讨论】:
【参考方案1】:您可以使用一些 aop 框架,例如 spring-aop,来跟踪每次创建对象的时间。
【讨论】:
您对他们跟踪这些对象的方法有任何想法吗?无论如何,我会检查它,谢谢 参见:6.2.2。声明一个方面和6.2.3。从link 声明一个切入点。您将在您检查的类(您需要研究的类)的构造函数上声明一个切入点,这样每次调用构造函数时都会调用方面方法。【参考方案2】:这里还有几个类似的问题,最好的答案似乎是这个:https://***.com/a/1947200/1140456
【讨论】:
【参考方案3】:在 Java 中,您无法访问没有引用的对象。您需要有人更新框架以允许您直接或通过其他对象访问对象。
【讨论】:
我想应该有一些先进的——但可能效率低下的——技术来达到这些目标。因为 JVM 在运行时知道对象及其类。无论如何,谢谢。 您也许可以通过 JVM 的调试接口破解某些东西,但这绝不是 Java 语言的一部分。原则上,如果您没有对它们的引用,对象甚至可能不存在。这就是自动垃圾收集背后的全部理念。以上是关于如何在 Java 虚拟机中查找类的实例?的主要内容,如果未能解决你的问题,请参考以下文章