一个tomcat中部署的多个war,相当于几个jvm

请直接去看原文

原文链接:一个tomcat有几个jvm-CSDN博客


前几天向unmi提问,今天他答复了。我觉得答复很清楚,在此记录下。总的来说

1、一个tomcat是一个进程,其中有很多线程(与有多少个app无关)

2、一个tomcat启动一个JVM,其中可以有很多APP

3、一个tomcat中部署的多个app,虽然同处一个JVM里,但是由于无法相互调用,所以也可以认为是分布式的

Question:

博主您好,请教一个问题,麻烦您抽空解答,非常感谢

我想问的是,在一个servlet容器(比如说tomcat)里部署了3个.war,那么启动后会有几个JVM存在呢,是一个JVM,还是3个JVM?

如果是1个jvm的话,那么这3个应用都是跑在一个jvm里,为什么又不能直接互相调用呢?

Answer:

@kyfxbl

一个tomcat只启动一个JVM,也就是说3个应用都是跑在一个JVM里,之所以它们不能互相调用是因为被类加载器隔离开的。

Tomcat 的类加载器层次是:

Bootstrap

|

System

|

Common

/

Webapp1 Webapp2 ...

每个应用的中的类分别是由Webapp1、Webapp2类加载器加载的,所以是相互不可见的。

关于类加载器可以看看http://unmi.cc/tag/classloader

类加载器的规则有三

  1. 一致性规则:类加载器不能多次加载同一个类

  2. 委托规则:在加载一个类之前,类加载器总参考父类加载器

  3. 可见性规则:类只能看到由其类加载器的委托加载的其他类,委托是类的加载器及其所有父类加载器的递归集

相关推荐
程序员小羊!15 小时前
HTTP&Tomcat&Servle之HTTP详解
网络协议·http·tomcat
Ada大侦探17 小时前
新手小白学习docker第六弹------Docker常规安装(安装tomcat、mysql、redis)
mysql·docker·tomcat
xybm160518 小时前
MTSET可溶于DMSO、DMF、THF等有机溶剂,并在水中有轻微的溶解性,91774-25-3
java·spring·eclipse·tomcat·1024程序员节
旧故新长20 小时前
解决MySQL中整型字段条件判断禁用不生效的问题
数据库·oracle·tomcat
zhangxueyi1 天前
Tomcat与Nginx之全面比较
linux·运维·服务器·nginx·tomcat
乌啼霜满天2491 天前
tomcat与servlet版本对应关系
java·servlet·tomcat
爱吃土豆的程序员1 天前
windows tomcat 报错后如何让窗口不闪退
java·windows·tomcat·窗口闪退
XiaoLiuLB1 天前
Tomcat NIO 配置实操指南
java·tomcat·nio
Change is good3 天前
windows下如何安装和部署tomcat
java·windows·tomcat
计算机毕设指导63 天前
基于SpringBoot的社区讯息服务小程序【附源码】
java·spring boot·后端·tomcat·intellij idea