我使用Eclipse并编译并运行了一些项目.然后我决定修改一些课程.似乎运行项目没有赶上更改,但如果我运行另一个项目实例,那么它确实看到了更改.问题是,Eclipse如何排除这一点?因为我看到.class文件存储为单个实例,后来的更改只是覆盖之前的.也许JVM会在内存中加载类,即使它们发生了变化也不会触及它们.但我想听听完整的故事.
当程序运行时,它会将.class文件读入内存并从此使用该副本.
如果你改变了,它不会重新读取文件并再次加载/链接它,这会更复杂.有类加载器可以自动执行此操作,但这不是默认行为.(它也非常不可靠,因为您可能以不兼容的方式更改类,例如修改字段或方法签名)
一般来说,软件是以可以想象的最简单的方式实现的.如果它很简单,它更有可能工作和被理解.在尝试理解计算机的工作原理时,这应该是您的指导原则.