Poison

Tomcat

Metrics

Key metrics for monitoring Tomcat

ThreadPool

Tomcat thread pool policy
The Executor (thread pool)

TaskQueue
ThreadPoolExecutor

JDK 原生的线程池实现在当前线程池线程数量大于等于 corePoolSize 时会在线程池队列满后才创建新的线程,更加适合于 CPU 密集型的任务,而 Tomcat 会在大于等于 corePoolSize 且小于 maximumPoolSize 时先创建线程,达到 maximumPoolSize 后再放入队列,更适合 IO 密集型任务。

类似的实现在 Dubbo 源码中也可以看到:

TaskQueue
EagerThreadPool

ClassLoader

The Loader Component
Class Loader How-To

可以看出,Web 应用程序类加载器与默认的 Java 委托模型不同,从 Web 应用程序的角度来看,类或资源的加载按以下顺序进行:

  • Bootstrap classes of your JVM
  • /WEB-INF/classes of your web application
  • /WEB-INF/lib/*.jar of your web application
  • System class loader classes
  • Common class loader classes

ParallelWebappClassLoader
WebappClassLoaderBase

类似的实现可以在 Flink 中看到,如:Inverted Class Loading and ClassLoader Resolution Order

SPI

DriverManager,_the_service_provider_mechanism_and_memory_leaks

Bloom filter

JarContents