Meine Frage ist
Ich ändere den Java-Code und dann wird die Seitenanforderung ausgeführt, und der Server kompiliert sie automatisch in Bytecode und sendet ihn zur Ausführung an die JVM. Warum müssen wir die JVM neu starten, um den geänderten Code auszuführen?
java 有很多热部署方案啊。https://www.google.com/search...
但是热部署会影响性能,而且在生产环境中,java 代码部署的频率是很低的。
所以,一般都是在开发环境中开启热部署。
虚拟机频繁编译,会占用Jvm运行内存,会影响到GC,而且网站性能会降低
热部署的本质是替换class,也就是说需要把旧的class从内存里踢掉再重新加载新的class,这里就涉及了类的卸载,而卸载一个类的条件之一是它的ClassLoader可以被垃圾回收给收走。反过来如果ClassLoader不能被回收掉的话,那就只能重启java了。