1

在开发模式下,我需要热重载。我之前用过各种语言,像 PHP,Node.js,甚至 Go lang,所有语言都支持热重载,零问题。但只是在Tomcat中,如果我设置reloadable=true,它会导致CPU 100%。在他们的官方文档中,它说 Catalina 将“监控”类文件的变化,所以你不应该把它当真。但当然我需要将其设置为 true,否则一旦类文件更改,我该如何重新部署?为什么监控会导致CPU 100%?我设置错了吗?谢谢!

4

1 回答 1

1

Java Tomcat 的运行机制与 PHP 不同。为了获得最佳性能,Java 会将所有类文件加载到内存中,因此它不会知道磁盘上的文件是否更改。为了监控这种变化,它需要频繁地读取磁盘并比较每个文件的校验和,如果发现差异则将新文件加载到内存中,这会消耗大量磁盘 I/O 并导致 CPU 100%。对于 PHP,这很简单,PHP 不会将每个 .php 文件加载到内存中,而是按需加载它们,这在某些情况下可能会很慢,但对于处理文件更改将是完美的。我相信这是主要的区别。

所以结论是:永远不要使用reloadable=trueTomcat。

于 2019-03-31T04:14:04.277 回答