如果我有一个 Java 文件 test.java,并使用 Eclipse 运行它并且需要很长时间来处理,那么我为什么能够修改 test.java 并同时运行它的另一个实例?应该有一个 test.class 文件,但 Eclipse 似乎在运行时缓存了旧的文件,对吧?
问问题
74 次
2 回答
5
当程序运行时,类文件已经被类加载器加载到内存中。因此,VM 不再需要 .class 文件。因此,如果 .class 文件在文件系统上发生更改,则没有问题。
于 2013-01-23T17:03:04.697 回答
1
如果我有一个 java 文件 test.java ,并使用 eclipse 运行它并且需要很长时间来处理,我怎么能修改 test.java 并同时运行它的另一个实例?应该有一个 test.class 文件,但是 eclipse 在运行时似乎缓存了旧的文件,对吗?
这通常不是真的,除非您关闭了自动项目构建和/或热代码部署。Eclipse 中对源文件的兼容更改将传播到任何已加载等效类的调试会话,除非类签名本身已更改。
但是,是的,Eclipse 中的每个调试会话实际上都是它自己的进程,具有自己的类加载器。
于 2013-01-23T17:09:35.600 回答