zoukankan      html  css  js  c++  java
  • Tomcat和JVM的内存配置

    原文路径:https://www.cnblogs.com/pangxiansheng/p/5378537.html

    JVM内存分配设置的参数有四个

    -Xmx Java Heap最大值,默认值为物理内存的1/4

    -Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;

    -Xmn Java Heap Young区大小,不熟悉最好保留默认值;

    -Xss 每个线程的Stack大小,不熟悉最好保留默认值;

    -XX:PermSize:设定内存的永久保存区域;

    -XX:MaxPermSize:设定最大内存的永久保存区域;

    -XX:PermSize:设定内存的永久保存区域;

    -XX:NewSize:设置JVM堆的'新生代'的默认大小;

    -XX:MaxNewSize:设置JVM堆的'新生代'的最大大小;

    • Eclipse中设置JDK的内存方式

      为什么要设置JDK的内存呢?

      方式一:有可能的情况是Tomcat的内存溢出了,我需要设置如下的参数[关于下面的设置,需要根据你电脑的内存地址来设置]

    -Xms512M -Xmx1024M -XX:PermSize=512m -XX:MaxPermSize=1024m

    JDK的内存设置操作过程如下,在Servers中找到诸如“Tomcat v6.0 Server at localhost [Stopped, Republish] ”双击显示如下页面,点击进入“Open launch configuration”--> Arguments --> 修改VM arguments中的参数配置。




    方式二:增加JDK的内存的方法,直接在jdk下面的optional java vm arguments; 

    Window --> Preferences --> Java --> Install JREs --> 选中配置的JRE编辑 --> 设置Default VM arguments

      

    • 当你感觉你的Eclipse启动数据比较慢的时候,可以设置如下的属性

      如果使用eclipse的话,那么在解压的根目录中找到eclipse.ini

      如果使用sts的话,那么在根目录中找到STS.ini

    -vmargs

    -Xms128M

    -Xmx512M

    -XX:PermSize=64M

    -XX:MaxPermSize=128M

    :这里的所有的JVM的参数是有设定规则的,补充内容中含有

    • 增加Tomcat的内存方式

      tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。

    • linux下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:

      SET JAVA_OPTS=-Xms512m -Xmx1024m

    • windows下,在tomcat_home}/bin/catalina.bat的前面,增加如下设置:

      SET JAVA_OPTS=-Xms512m -Xmx1024m

      :表示初始化内存为512MB,可以使用的最大内存为1024MB

    • 对Tomcat的优化操作[来源自网络]

      (1) 在bin/catalina.bat文件中加入下面参数,对JVM进行优化,至于这一大驼参数的作用及说明,
      请查看文档: http://www.mzone.cc/article/321.html

    JAVA_OPTS="-server -showversion -Xms1000M -Xmx1000M -XX:PermSize=256m -XX:MaxPermSize=256m"

    JAVA_OPTS="$JAVA_OPTS -d64 -XX:CICompilerCount=8 -XX:+UseCompressedOops"

    JAVA_OPTS="$JAVA_OPTS -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=90"

    JAVA_OPTS="$JAVA_OPTS -XX:ReservedCodeCacheSize=256m -XX:-UseAdaptiveSizePolicy"

    JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai -XX:-DontCompileHugeMethods"

    JAVA_OPTS="$JAVA_OPTS -Xss256k -XX:+AggressiveOpts -XX:+UseBiasedLocking"

    JAVA_OPTS="$JAVA_OPTS -XX:MaxTenuringThreshold=31 -XX:+CMSParallelRemarkEnabled "

    JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=256m -XX:+UseFastAccessorMethods"

    JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"

    JAVA_OPTS="$JAVA_OPTS -XX:+UseGCOverheadLimit -XX:AllocatePrefetchDistance=256 -XX:AllocatePrefetchStyle=1"

    JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:MaxGCPauseMillis=200"

    上述这样的配置,基本上可以达到:

    • 系统响应时间增快
    • JVM回收速度增快同时又不影响系统的响应率
    • JVM内存最大化利用
    • 线程阻塞情况最小化

    -Xms=-Xmx=服务器内存*70%
    如部署tomcat,jboss在同一台服务器 -Xms=-Xmx=服务器内存*80%*1/4

    (2) Tomcat连接参数的优化,主要是针对吞吐量做优化:

    修改conf/server.xml文件,把原来

    <Connector port="8080" protocol="HTTP/1.1" />

    修改内容如下:

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

    URIEncoding="UTF-8"

    minSpareThreads="25"

    maxSpareThreads="75"

    enableLookups="false"

    disableUploadTimeout="true"

    connectionTimeout="20000"

    acceptCount="300"

    maxThreads="300"

    maxProcessors="1000"

    minProcessors="5"

    useURIValidationHack="false"

    compression="on"

    compressionMinSize="2048"

    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

    redirectPort="8443"/>

    一段补充说明:

    搜索【<Executor name="tomcatThreadPool"】,开启并调整为

    <Executor

    name="tomcatThreadPool"

    namePrefix="catalina-exec-"

    maxThreads="1000"

    maxIdleTime="60000"

    minSpareThreads="20"/>

    搜索【port="8080"】,调整为

    <Connector

    port="8080"

    executor=" tomcatThreadPool" //开启线程池

    protocol="org.apache.coyote.http11. Http11AprProtocol" //我们没有安装: 开启Apr协议,需要安装Apr支持maxHttpHeaderSize="8192"

    maxThreads="1000"

    processorCache="1000"

    acceptCount="1000"

    minSpareThreads="100"

    acceptorThreadCount="8"

    URIEncoding="UTF-8"

    enableLookups="false"

    redirectPort="8443" //关闭反向查询

    connectionTimeout="120000"

    keepAliveTimeout="120000"

    maxKeepAliveRequests="65535"

    disableUploadTimeout="true"

    compression="on"

    compressionMinSize="4096" //开启静态文件压缩

    noCompressionUserAgents="gozilla, traviata" //开启静态文件压缩

    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json,appli cation/x-javascript " //开启静态文件压缩

    />

    可以通过java/jdk/bin下的java visualVM查看eclipse的内存大小和tomcat的内存大小,主要看堆,PermGen两个大小,如图:


  • 相关阅读:
    实例变量和类变量
    Spring源码解读(一)
    linux shell学习三
    linux shell学习二
    linux shell学习一
    利用Zynq Soc创建一个嵌入式工程
    (转) 使用vivado创建工程 4[完结]
    (转) 使用vivado创建工程 3
    (转) 使用vivado创建工程 2
    (转) 使用vivado创建工程 1
  • 原文地址:https://www.cnblogs.com/jpfss/p/10931410.html
Copyright © 2011-2022 走看看