首页 > 代码库 > tomcat

tomcat

Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机。


#####关于tomcat server.xml文件详解

[dy@web-dy server]# cat /usr/local/apache-tomcat-6.0.41_8081/conf/server.xml 

<?xml version=‘1.0‘ encoding=‘utf-8‘?>


<Server port="8181" shutdown="SHUTDOWN">

###port="8181"  已做修改

  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

  <Listener className="org.apache.catalina.core.JasperListener" />

  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />

  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  <GlobalNamingResources>

    <Resource name="UserDatabase" auth="Container"

              type="org.apache.catalina.UserDatabase"

              description="User database that can be updated and saved"

              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

              pathname="conf/tomcat-users.xml" />

  </GlobalNamingResources>

  <Service name="Catalina">

    <Connector port="8081" protocol="HTTP/1.1" 

###port="8081"  已做修改

               maxThreads="512" minSpareThreads="256" maxSpareThreads="512"

               enableLookups="false" acceptCount="100"

               connectionTimeout="20000" disableUploadTimeout="true"

               redirectPort="8443"/>

    <Connector port="8281" 

###port="8281"  已做修改

               maxThreads="512" minSpareThreads="256" maxSpareThreads="512"

               acceptCount="1024" debug="0" connectionTimeout="20000"

               enableLookups="false"

        protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

             resourceName="UserDatabase"/>

      <Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">

       <Context path="" docBase="/app/trend" debug="0" reloadable="true" crossContext="true"/>

###Context该行指定程序目录 即docBase="/app/trend",若该行被注释,则进到webapps目录下,即appBase="webapps"

      </Host>

    </Engine>

  </Service>

</Server>


#####关于tomcat jvm内存设置

[dy@web-dy bin]# cat /usr/local/apache-tomcat-6.0.41_8081/bin/catalina.sh

JAVA_OPTS="-server -Xms3g -Xmx3g -Xmn1g -Xss256k -XX:PermSize=256m -XX:MaxPermSize=256m -XX:SurvivorRatio=6 -XX:

-UseAdaptiveSizePolicy -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:ParallelGCThreads=4 -Dfile.encoding=utf-8"

其中

-server  表示以server模式运行(运行效率比默认的client高很多)

-Xms3g   初始内存大小

-Xmx3g   最大内存大小

-Xmn1g   最小内存大小


堆(Heap)和非堆(Non-heap)内存

Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”

“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就

是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存

、每个类结构以及方法和构造方法的代码都在非堆内存中。 

堆内存分配 JVM初始分配的内存由-Xms指定

非堆内存分配 JVM使用-XX:PermSize设置非堆内存初始值,由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。 


本文出自 “青春邓勇” 博客,请务必保留此出处http://dengyong.blog.51cto.com/8409869/1563062

tomcat