java - 如果我在 Debug模式下启动 tomcat,为什么 tomcat 可以重新加载我修改过的类?

标签 java tomcat jvm

类似的问题是 Dynamic class reloading works only in debug mode, why/ how it really works? ,但我仍然很困惑,我还有其他问题。

当我开发Web应用程序并使用tomcat时,如果我使用 Debug模式启动它。修改后的代码无需重启即可立即生效。

如何实现?

为什么修改代码的效果是由tomcat的启动方式决定的?

为什么修改方法名后代码无法生效?(我知道修改方法体的代码是可以的)

最佳答案

问>为什么修改代码的效果是由tomcat的启动方式决定的?
答>Hotswap功能是 JPDA(JavaTM 平台调试器架构)的一项功能。它是在 Java v1.4.2 中添加的。阅读链接以获取更多信息。

问>如何实现?
A>这是HotSpot JVM的一个特性

问> 为什么修改方法名后代码无法生效?
A> 我猜测 - 因为支持更改的方法签名将需要更多的工作来实现。这就像在运行时重新链接每个类/方法。汽车类比:这就像在驾驶时更换所有四个轮胎;-)。如果您需要此功能,请考虑其他第 3 方工具,例如 JRebel。

关于java - 如果我在 Debug模式下启动 tomcat,为什么 tomcat 可以重新加载我修改过的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13304782/

相关文章:

java - 在 Android 应用程序上显示非静态字符串?

java - maven:无法覆盖 tomcat 服务器的 server.port

android - Intellij IDEA 显示错误 : could not create the java virtual machine

tomcat - 不能 jar -tvf 一个 jar 文件

java - 嵌入式Tomcat给出 "did not permit the HTTP upgrade to WebSocket"错误

java - 原生 Java 崩溃 Linux

java - 写Java代码让java虚拟机崩溃

java - Java 如何比较两个包装变量?

java - 如何使用 Spring Boot 1.5.3 在 jetty 9.4 中从 example.com :port to example. com 映射我的域?

java - Struts2 execAndWait 拦截器升级后警告