如果我有一个Java文件test.java,并使用Eclipse运行它并且需要很长时间来处理,为什么我能够修改test.java并同时运行它的另一个实例?应该有一个test.class文件,但Eclipse似乎在运行时缓存旧文件,对吧?
答案 0 :(得分:5)
程序运行时,类文件已经由类加载器加载到内存中。因此,VM不再需要.class文件。如果.class文件在文件系统上发生变化,那就没问题了。
答案 1 :(得分:1)
如果我有一个java文件test.java,并使用eclipse运行它 需要很长时间才能处理,为什么我能够修改test.java 并同时运行它的另一个实例?应该有一个 test.class文件,但是eclipse似乎在运行时缓存旧的, 正确?
除非您关闭了自动项目构建和/或热门代码部署,否则这通常不是 。除非更改了类签名本身,否则Eclipse中对源文件的兼容更改将传播到已加载等效类的任何调试会话。
但是,是的,Eclipse中的每个调试会话实际上都是它自己的进程,有自己的类加载器。