Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 若在应用程序仍在运行时修改项目中的类,会发生什么情况?_Java_Eclipse_Jvm - Fatal编程技术网

Java 若在应用程序仍在运行时修改项目中的类,会发生什么情况?

Java 若在应用程序仍在运行时修改项目中的类,会发生什么情况?,java,eclipse,jvm,Java,Eclipse,Jvm,我使用Eclipse并编译和运行了一些项目。然后我决定修改一些类。 运行project似乎并没有跟上变化,但若我运行project的另一个实例,它就会看到变化。 问题是,Eclipse如何排除这种可能性? 因为我看到.class文件存储为单个实例,以后的更改只会覆盖以前的。可能是JVM将类加载到内存中,即使它们发生了变化,也不去碰它们。但我想听听完整的故事 当程序运行时,它将.class文件读入内存,并从此使用该副本 如果更改,它不会重新读取文件并再次加载/链接它,这将更加复杂。有一些类加载器自

我使用Eclipse并编译和运行了一些项目。然后我决定修改一些类。 运行project似乎并没有跟上变化,但若我运行project的另一个实例,它就会看到变化。 问题是,Eclipse如何排除这种可能性?
因为我看到.class文件存储为单个实例,以后的更改只会覆盖以前的。可能是JVM将类加载到内存中,即使它们发生了变化,也不去碰它们。但我想听听完整的故事

当程序运行时,它将
.class
文件读入内存,并从此使用该副本

如果更改,它不会重新读取文件并再次加载/链接它,这将更加复杂。有一些类加载器自动执行此操作,但这不是默认行为。(这也是非常不可靠的,因为您可能会以不兼容的方式更改类,例如修改字段或方法签名)


一般来说,软件是以想象得到的最简单的方式实现的。如果简单的话,它更有可能工作并被理解。这应该是你理解计算机工作原理的指导原则。

@mangusta我完全同意他的观点。。。。不管他说什么。。ENGLISH Pleaseeok,@ПааСаprevious.class文件已全部加载到内存中,相应地,它们在内存中运行,并且不知道对硬盘上的类所做的更改drive@mangusta也许这应该是一个答案,而不是一个评论:P