`

一个tomcat有几个jvm

阅读更多
前几天向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. 可见性规则:类只能看到由其类加载器的委托加载的其他类,委托是类的加载器及其所有父类加载器的递归集
分享到:
评论

相关推荐

    Tomcat JVM内存设置方法

    JVM内存主要分为以下几个部分: 1. **堆内存(Heap Memory)**:这是JVM管理的主要内存区域之一,用于存储对象实例以及数组等数据。堆内存又可以细分为新生代(Young Generation)和老年代(Old Generation)。 - ...

    java虚拟机jvm及Tomcat中的jvm有关内存的设置与调优

    4. **程序计数器(Program Counter Register)**:当前线程所执行的字节码指令地址,每条线程都有一个独立的程序计数器。 5. **本地方法栈(Native Method Stack)**:与虚拟机栈所发挥的作用非常相似,但是它为虚拟机...

    关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论

    主要涉及以下几个配置点: 1. **全局配置**:在`server.xml`文件中,`Connector`元素的`URIEncoding`属性应设置为合适的字符集,例如`UTF-8`,以确保URL中的非ASCII字符正确解析。 2. **Web应用配置**:在每个Web...

    JVM优化3(Tomcat参数调优,JVM参数调优,jvm字节码,代码优化).pdf

    本篇文件内容主要介绍了JVM优化的第三部分,重点围绕Tomcat参数调优、JVM参数调优、JVM字节码优化以及代码优化等几个方面。下面是针对这些知识点的详细解释: 1. Tomcat参数调优 在Tomcat参数调优部分,首先介绍了...

    ECLIPSE,TOMCAT,JVM内存设置

    JVM内存分为几个区域,包括堆(Heap)、方法区(Method Area)、虚拟机栈(JVM Stack)、本地方法栈(Native Method Stack)和程序计数器(Program Counter Register)。内存溢出问题通常发生在堆或方法区。理解这些...

    如何配置Tomcat的JVM虚拟机内存大小

    在`server.xml`文件中,有几个关键参数: - `maxThreads`:表示Tomcat可创建的最大线程数,用于处理并发请求,默认为200。 - `acceptCount`:当所有线程都处于忙碌状态时,等待队列中可以容纳的请求数量,默认为10...

    jvm虚拟机参数调优,tomcat调优

    接下来,Tomcat调优主要包括以下几个方面: 1. **连接器优化**:`Connector`组件负责处理客户端请求。可以通过调整`maxThreads`(最大线程数)和`minSpareThreads`(最小空闲线程数)来平衡响应速度和资源利用率。 ...

    Tomcat 调优及 JVM 参数优化

    总之,Tomcat调优和JVM参数优化是一个细致的过程,需要结合服务器硬件、应用负载和业务特性进行。通过合理的配置,不仅可以提高应用性能,还能降低服务器资源的浪费,实现更高效、稳定的运行环境。在实际操作中,...

    如何设置Tomcat的JVM虚拟机内存大小

    Tomcat,作为一个流行的Java应用服务器,同样依赖于JVM来执行Web应用程序。设置Tomcat的JVM虚拟机内存大小是为了确保服务器能够高效地运行并避免因内存溢出而导致的性能问题或服务中断。 内存溢出是由于程序在运行...

    JVM优化3(Tomcat参数调优,JVM参数调优,jvm字节码,代码优化).zip

    优化Tomcat参数主要包括以下几个方面: - **最大连接数**:`maxConnections`和`acceptCount`控制Tomcat接受的最大并发连接数,适当增加可应对高并发场景。 - **线程池**:`minSpareThreads`、`maxThreads`和`...

    一个很好的tomcat实例

    在Tomcat实例中,有以下几个关键部分值得注意: 1. **服务器配置**:Tomcat的配置主要通过`server.xml`文件进行,该文件定义了服务器的端口、连接器、虚拟主机和Context等设置。理解并能修改这些设置是管理员的基本...

    运行多个tomcat

    标题中的“运行多个tomcat”指的是在同一台服务器上同时运行两个或多个独立的Tomcat服务器实例,以便隔离不同应用程序,防止一个应用的问题影响到其他应用的正常运行。描述提到的两种方法分别是: 1. **单独安装多...

    xp/win7上配置多个tomcat

    在实际应用场景中,可能有以下几种情况会促使我们考虑在同一台机器上配置多个Tomcat实例: 1. **项目隔离**:不同的项目或应用程序可能需要不同的配置环境,比如不同的端口号、JVM参数或者数据源配置。 2. **负载...

    JBOSS\Tomcat最大连接数配置和jvm内存配置.docx

    在JBOSSTomcat服务器的性能优化中,最大连接数配置和JVM内存配置是两个至关重要的环节,它们直接影响到服务器的响应速度和稳定性,尤其对于处理大量并发请求的场景。 首先,我们来看JBOSS最大连接数的配置。在`...

    Tomcat教程-JVM相关工具.docx

    本教程将详细解释Tomcat服务器中与JVM相关的几个关键工具,包括它们的功能、使用方法及示例。 1. **jps (Java Virtual Machine Process Status tool)**: jps命令用于列出运行在指定主机上的Java虚拟机进程。通过...

    Tomcat服务器性能调优几个方面[定义].pdf

    总结,Tomcat服务器性能调优是一个综合性的过程,涵盖了操作系统、JVM、Web服务器集成和集群等多个方面。每个环节的优化都能带来性能提升,根据实际应用场景和需求,灵活选择并调整这些参数,可以最大限度地提升系统...

    Tomcat性能优化及JVM内存工作原理

    Tomcat的性能优化主要包括以下几个方面: 1. **增加最大连接数**:通过调整`maxThreads`参数,可以设定Tomcat的最大并发连接数,以处理更多的请求,防止请求堆积。 2. **调整工作模式**:Tomcat提供了Bio、Nio和...

Global site tag (gtag.js) - Google Analytics