Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可能在执行时看到对对象的所有引用?_Java_Object_Netbeans_Reference - Fatal编程技术网

Java 是否可能在执行时看到对对象的所有引用?

Java 是否可能在执行时看到对对象的所有引用?,java,object,netbeans,reference,Java,Object,Netbeans,Reference,有没有办法在执行时查看对对象的所有引用 我使用的是Netbeans,它有这个功能吗 编辑:使用探查器执行此操作没有问题,我只需要知道引用,不管如何。如果转储堆并对其进行分析,就可以找到所有引用。像VisualVM和YourKit这样的分析器可以为您完成这项工作 然而,不可能动态地确定这一点。如果您想知道引用某个对象的所有内容,您必须自己维护这些内容的集合。在Netbeans中,您可以使用查找用法功能查看特定项目中引用的特定类的位置 从项目资源管理器中,选择类并右键单击>查找用法 结果看起来有点像

有没有办法在执行时查看对对象的所有引用

我使用的是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是葡萄牙语的。感谢您分享您问题的答案并与我们分享。回答错误的问题。谢天谢地,这是我目前面临的问题的答案:——)