2010-12-01 26 views
5

我使用eclipse(编写,调试)作为IDE。在调试模式下,当我进行一些更改时,如初始化本地变量,它们会自动反映。在调试模式下,哪些代码更改会自动反映在eclipse中?

但是其他的改变,如改变一个静态变量的值;有时候我会收到一条消息,说我需要重新启动虚拟机,有时我不会。

现在问题是什么样的变化会自动反映,哪些不会变化。

我使用远程调试,但从eclipse运行程序时会有什么区别吗?

回答

2

这不是IDE功能,而是远程调试的虚拟机功能。虚拟机现在可以处理变量初始化器内部逻辑的简单变化,但不能用变化的类结构处理。

重新装载正常处理,如果你的类结构并没有改变:你不删除或添加成员,方法或内部类,因为添加成员或内部类改变了分配给类内存的大小。方法不会改变内存大小,但会改变它们的结构。

Here你可以找到一些解释。

3

你看到Hotswap在行动。它仅限于更改方法体。更多信息here

0

在远程调试,因为在所有蚀不能互换不同的JVM中的类文件热代码替换是不可能的。

远程调试器连接到不同的虚拟机和监视的是,远程机器内部执行的代码。只有源文件是本地的。

+0

权!我所做的是我在远程机器上编译我的类文件,从JVM运行的地方开始。只是远程调试。 – 2010-12-01 10:37:41

0

静态变量是一旦类被实例化的类变量。他们在上课时间实例化。因此,更改静态变量将要求VM重新加载并实例化已更改的静态变量。

这就是我所能提供的所有问题。

0

HotSwap非常有限,它只能重新加载简单的方法体更改。

看看JRebel,它也可以重新加载其他代码更改(例如添加/删除字段/方法/注释/枚举值等)。 查看详细的feature list

(请注意,JRebel的是一个商业产品,与现有的OSS和Scala开发人员免费许可证。)

相关问题