Java 是否可能在执行时看到对对象的所有引用?
有没有办法在执行时查看对对象的所有引用 我使用的是Netbeans,它有这个功能吗Java 是否可能在执行时看到对对象的所有引用?,java,object,netbeans,reference,Java,Object,Netbeans,Reference,有没有办法在执行时查看对对象的所有引用 我使用的是Netbeans,它有这个功能吗 编辑:使用探查器执行此操作没有问题,我只需要知道引用,不管如何。如果转储堆并对其进行分析,就可以找到所有引用。像VisualVM和YourKit这样的分析器可以为您完成这项工作 然而,不可能动态地确定这一点。如果您想知道引用某个对象的所有内容,您必须自己维护这些内容的集合。在Netbeans中,您可以使用查找用法功能查看特定项目中引用的特定类的位置 从项目资源管理器中,选择类并右键单击>查找用法 结果看起来有点像
编辑:使用探查器执行此操作没有问题,我只需要知道引用,不管如何。如果转储堆并对其进行分析,就可以找到所有引用。像VisualVM和YourKit这样的分析器可以为您完成这项工作
然而,不可能动态地确定这一点。如果您想知道引用某个对象的所有内容,您必须自己维护这些内容的集合。在Netbeans中,您可以使用查找用法功能查看特定项目中引用的特定类的位置 从项目资源管理器中,选择类并右键单击>查找用法 结果看起来有点像下图: 对不起,我不清楚。我想在执行时引用。全部的 已创建对象的引用 不幸的是,Java中没有这样的功能。但是,有一种方法可以通知您在运行时不再引用对象 解决方案是创建对受监视对象的弱引用,并将其与对象关联。当不再有对该对象的硬引用时,GC迟早会重新收集它并将弱引用排队。你可以跟我核对一下 如果您提供有关您的问题的更多信息,我们可能会提供更多提示和窍门 编辑 要控制对项目的所有引用,可以使用代理模式。您创建的代理对象包含连接对象的私有实例,而不是设置对连接对象的引用。然后,让代码调用将调用连接对象本身的代理,而不是直接引用连接 处理完连接对象后,请在代理对象内部将其关闭。如果代码的其他部分仍然试图通过代理访问该连接对象,那么在调用它时,您将能够在代理中检测到它 可以说,这是一个可以用来发现代码的哪一部分仍然在“引用”对象的技巧
希望这有帮助。好的,Netbeans显示对对象的所有引用 首先,在调试模式下运行项目
CTRL+F5
,然后,显示加载的类Alt+Shift+4
或窗口->调试->加载的类
选择要查看引用的类并双击它
暂停执行,就会出现错误
顶部是对象的属性,底部是对象的所有引用
Java不维护引用计数,如果维护了,这些引用将不会正常公开。不太清楚。。。你是说像这样的工具吗?我想问题在于如何使用IDE,而不是疯狂的Java引用。Netbeans术语是“查找用法”,应该类似于Eclipse的“查找所有引用”。可以是IDE或其他方式。我通知了IDE,因为它可能在那里,但我不知道。@Renato:不清楚你在追求什么-执行时引用对象,或者所有引用类或方法的代码。只是对引用和使用后连接保持打开状态的问题有点好奇。@Renato我已经更新了我的解决方案,并建议解决您的问题。@JVersty,谢谢您的回答。我正在从C++背景中学习java,并有一系列的引用,这些元素很难清理JUnit。弱引用或软引用看起来会有所帮助。需要菜单名方面的帮助,我的Netbeans是葡萄牙语的。感谢您分享您问题的答案并与我们分享。回答错误的问题。谢天谢地,这是我目前面临的问题的答案:——)