Java监视超出作用域的变量



在调试C/c++应用程序时,我可以创建一个地址强制转换为指针类型的表,然后查看结构的内容,即使它超出了作用域。有可能在Java中实现类似的东西吗?
假设我在一个方法中,我添加了一个手表到"&this"然后当我离开类方法时,我仍然可以看到它的内容,即使它超出了作用域?

我很确定我的问题的答案是"不",所以我最感兴趣的是"为什么不"的解释。这是JVM的限制吗?JPDA限制?有更好的地方问这样一个专门的问题吗?

在C/c++中,您正在监视(由指向的区域)一个任意指针,并将其强制转换为该变量。

在Java中没有指针。你只能用watch a作为变量。在作用域之外,它不存在

你为什么要看呢?如果你把手表放在它上面,它在范围内就会被正确地监视。

不能监视不在作用域中的变量。

但是,如果找到指向该对象的另一个变量,则可以监视该对象。

观察一个没有在任何地方被引用的对象是没有意义的(它不能以任何方式影响程序的执行,它不能再被改变,它将被垃圾收集,内存将被完全不同的东西重用)。

java级调试工具仍然在JVM内存管理之上工作,因此您需要对对象的有效引用,您不能只是窥探随机内存区域。

最新更新