当前位置: 首页 > 面试题库 >

在调试Java时解密变量信息

羊舌兴德
2023-03-14
问题内容

我正在使用IntelliJ IDEA 8调试一些Java,但是这个问题可能适用于所有Java调试器。在变量列表中,它们显示为:

myVariable = {some.package.SomeClass@12345}

我很好奇类名后面的数字。确切的数字是多少?如果所引用的是相同的基础对象,则两个变量的编号是否相同?

提前致谢。


问题答案:

这是JVM报告的 objectId
,有关详细信息,请参见JDWP规范。

唯一标识目标VM中的对象。一个特定的对象将由JDWP命令中的一个正确的objectID标识,并在其整个生命周期内(或直到objectID被明确处置为止)进行答复。除非已显式地处理了ObjectID,否则无论引用的对象是否已被垃圾回收,ObjectID都不会再用于标识其他对象。objectID为0表示空对象。注意,对象ID的存在不会阻止对象的垃圾回收。任何尝试访问带有其对象ID的垃圾收集对象的尝试都会导致INVALID_OBJECT错误代码。可以使用DisableCollection命令禁用垃圾收集,但是通常不需要这样做。



 类似资料:
  • 除了Trace调试之外,系统还提供了\think\Debug类用于各种调试。 输出某个变量是开发过程中经常会用到的调试方法,除了使用php内置的var_dump和print_r之外,ThinkPHP框架内置了一个对浏览器友好的dump方法,用于输出变量的信息到浏览器查看。 用法: dump($var, $echo=true, $label=null) 相关参数的使用如下: 参数 描述 var(必须

  • This enables the debugging console. The console is a javascript window that informs you of the included templates and assigned variables for the current template page. 它能启动调试控制台。该控制台是一个javascript窗口,该窗

  • 问题内容: 当我在Intellij Idea中调试Java应用程序时,我在堆栈框架中看到所有变量,如下所示: “ @”后面的数字是什么意思?它不同于hashCode返回的内容。hashCode以十六进制表示形式返回数字2a134eca,等于整数表示形式705908426。数字77和705908426是不同的。 问题答案: @是自应用程序启动以来的对象计数编号。因此,@ 1012表示自应用启动以来创

  • 问题内容: 在SQL Server中,我可以从应用程序中复制sql代码,然后将其粘贴到SSMS中,声明并分配sql中存在的var,然后运行。是伟大的调试方案。 例如(请注意,我生疏了,语法可能不正确): 我想在pgAdmin中使用Postgres做类似的事情(或其他postgres工具,有什么建议吗?),我可以将我的SQL(参数和全部)放到可以在Postgres DB上运行的东西上。 我意识到您可

  • 我是Java新手,我正在尝试创建一个ADT。我的ADT涉及通过输入分子和分母来创建和处理分数。我希望我的方法之一是将两个分数相加,并根据两个和的gcd返回一个简化的分数。我遇到的问题是实例化两个分数的组成部分(分子和分母)。该方法应该取一个分数其他,表示为。我分配的第一个变量是 但这似乎不起作用。以下是迄今为止的方法:

  • This allows alternate ways to enable debugging. NONE means no alternate methods are allowed. URL means when the keyword SMARTY_DEBUG is found in the QUERY_STRING, debugging is enabled for that invocat