除了众所周知的在debug模式下,我们可以通过设置断点来查看程序运行时的详细信息。还有其它一些小细节,今天我们就来说一下。

在debug模式下,当我们修改方法体内的代码时,我们是不需要重启web server的,web服务器会自动的把这些改动替换到vm当中,学名叫hot swap。通过以下运行时的截图,给大家展示一下效果

原始情况下:

155653125.jpg

在不重启web服务器的情况下,修改控制台输出内容,运行时控制台输出内容即为修改后的内容

160501685.jpg

可以看到,在不重启web server的情况下,我们修改的内容会马上起作用。也即,这些内容会动态的添加到运行的vm当中。

但经过测试,发现并不是所有情况下,我们的改动都会同步更新到运行时vm当中。下面把可以动态更新到vm中的情况与不能动态更新到vm中的情况列一下:

改动内容可以动态更新到vm的情况

1、修改方法体内的内容,无论是实例方法还是静态方法。

不能动态更新到vm的情况

1、新增、删除实例方法、静态方法时。

2、新增、删除实例变量、类变量时。

3、引入了新创建的内部或外部类时。

4、方法当中有对类变量或实例变量的引用,当外部变量被修改时。

此时,如果使用Myeclipse的话,会提示你

171517912.jpg

一点认识,欢迎大家拍砖。

为方便与大家交流、分享开发经验,欢迎大家加入我建的QQ技术交流群:111412248。注意,加入本群需要在开发上有一定的深度与广度。