举报
set CATALINA_HOME=D:\server\apache-tomcat-5.5.31
set JAVA_OPTS=-server -Xmn80m -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m
<Connector port="8080" maxHttpHeaderSize="8192" useBodyEncodingForURI="true" maxThreads="2000" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" edirectPort="8443" acceptCount="4000" compression="on" compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" connectionTimeout="60000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
现在来说一下如何在TOM猫中一步到位(要求TOM猫5.0以后版本)。
在conf/server.xml中找到第一个Connector,加入如下属性即可,就是这么简单:
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
第一行表示开启gzip压缩,第二行表示神马希望有人能告诉我,第三行表示需要排除的浏览器,第四行就是需要压缩的文件的mine类型了。
悄悄透露,使用之后,腰不酸了,腿不疼了,一口气上五楼。
最后,推荐两个GZIP在线检测的网站:
老外的:http://www.seoconsultants.com/tools/compression
国产的:http://gzip.iamzz.com/
compressionMinSize="2048"
这个神马表示大于2048字节的输出才启用gzip,因为太小压缩不划算,甚至反而变大。
启用gzip,会提高client、server的cpu占用率。
需要平衡服务器的io和cpu,综合考虑。
server.xml
Xml代码
1.<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="2000" minSpareThreads="1000"/>
<Connector port="8080" maxHttpHeaderSize="8192" useBodyEncodingForURI="true" maxThreads="2000" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" edirectPort="8443" acceptCount="4000" compression="on" compressionMinSize="2048" connectionTimeout="20000" URIEncoding="UTF-8"/>
catalina.bat
set JAVA_OPTS=-Xms1400m -Xmx1400m -Djava.awt.headless=true
JavaFX教程-类与对象 | 10 javaScript的异常处理 try{ }catch(the ... 2009-05-04
Tomcat内存设置详解
文章分类:Java编程
Java内存溢出详解
一、常见的Java内存溢出有以下三种:
1. java.lang.OutOfMemoryError: Java heap space----JVM Heap(堆)溢出
JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存。
可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap的大小是Young Generation 和Tenured Generaion 之和。
在JVM中如果98%的时间是用于GC,且可用的Heap size 不足2%的时候将抛出此异常信息。
解决方法:手动设置JVM Heap(堆)的大小。
2. java.lang.OutOfMemoryError: PermGen space ---- PermGen space溢出。
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。
为什么会内存溢出,这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同,sun的 GC不会在主程序运行期对PermGen space进行清理,所以如果你的APP会载入很多CLASS的话,就很可能出现PermGen space溢出。
解决方法: 手动设置MaxPermSize大小
3. java.lang.StackOverflowError ---- 栈溢出
栈溢出了,JVM依然是采用栈式的虚拟机,这个和C和Pascal都是一样的。函数的调用过程都体现在堆栈和退栈上了。
调用构造函数的 “层”太多了,以致于把栈区溢出了。
通常来讲,一般栈区远远小于堆区的,因为函数调用过程往往不会多于上千层,而即便每个函数调用需要 1K的空间(这个大约相当于在一个C函数内声明了256个int类型的变量),那么栈区也不过是需要1MB的空间。通常栈的大小是1-2MB的。
通常递归也不要递归的层次过多,很容易溢出。
解决方法:修改程序。
二、解决方法
在生产环境中tomcat内存设置不好很容易出现jvm内存溢出。
1、linux下的tomcat:
修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m"
2、如果tomcat 5 注册成了windows服务,以services方式启动的,则需要修改注册表中的相应键值。
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\Java,右侧的Options
原值为
-Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"
-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
-Xrs
加入 -Xms256m -Xmx512m
重起tomcat服务,设置生效
3、如果tomcat 6 注册成了windows服务,或者windows2003下用tomcat的安装版,
在/bin/tomcat6w.exe里修改就可以了 。
4、如果要在myeclipse中启动tomcat,上述的修改就不起作用了,可如下设置:
Myeclipse->preferences->myeclipse->servers->tomcat->tomcat×.×->JDK面板中的
Optional Java VM arguments中添加:-Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m
三、jvm参数说明:
-server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:java Heap初始大小。 默认是物理内存的1/64。
-Xmx:java heap最大值。建议均设为物理内存的一半。不可超过物理内存。
-XX:PermSize:设定内存的永久保存区初始大小,缺省值为64M。(我用visualvm.exe查看的)
-XX:MaxPermSize:设定内存的永久保存区最大大小,缺省值为64M。(我用visualvm.exe查看的)
-XX:SurvivorRatio=2 :生还者池的大小,默认是2,如果垃圾回收变成了瓶颈,您可以尝试定制生成池设置
-XX:NewSize: 新生成的池的初始大小。 缺省值为2M。
-XX:MaxNewSize: 新生成的池的最大大小。 缺省值为32M。
如果 JVM 的堆大小大于 1GB,则应该使用值:-XX:newSize=640m -XX:MaxNewSize=640m -XX:SurvivorRatio=16,或者将堆的总大小的 50% 到 60% 分配给新生成的池。调大新对象区,减少Full GC次数。
+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
-Xss:每个线程的Stack大小,“-Xss 15120” 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.
-verbose:gc 现实垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一
-XX:+UseParNewGC :缩短minor收集的时间
-XX:+UseConcMarkSweepGC :缩短major收集的时间 此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。
-XX:userParNewGC 可用来设置并行收集【多CPU】
-XX:ParallelGCThreads 可用来增加并行度【多CPU】
-XX:UseParallelGC 设置后可以使用并行清除收集器【多CPU】
分享到:
相关推荐
### 修改Tomcat内存大小 在部署Java Web应用时,经常需要根据实际运行需求调整Tomcat服务器的内存配置。本文将详细介绍如何修改Tomcat的内存大小,包括常用的内存参数及其意义,并提供具体的设置方法。 #### 一、...
"TOMCAT内存大小调整" TOMCAT内存大小调整是指在使用Java程序从数据库中查询大量数据或应用服务器(如Tomcat、JBoss、WebLogic)加载jar包时,出现java.lang.OutOfMemoryError异常的解决方法。这种异常主要是由于...
### 如何设置Tomcat内存大小 要修改Tomcat的内存参数,主要操作步骤如下: 1. **定位配置文件**:找到Tomcat安装目录下的`bin`目录,其中包含`catalina.sh`(Unix/Linux系统)或`catalina.bat`(Windows系统)脚本...
设置Tomcat内存大小主要是调整JVM的启动参数。有两种常见的启动方式: 1. **使用startup.bat脚本启动**:在Windows环境下,可以在`set JAVA_OPTS=-Xms64m -Xmx128m`之前添加环境变量,这将设置JVM的初始堆内存(Xms...
Tomcat 修改内存大小 Tomcat 是一个流行的基于 Java 的 Web 应用服务器,为了确保 Tomcat 的稳定运行,需要根据实际情况调整 Tomcat 的内存大小。下面将介绍如何修改 Tomcat 的内存大小,在 Windows 和 Linux 两个...
### Tomcat内存设置详解 #### 引言 在构建高性能且稳定的Web应用时,合理配置Tomcat内存参数是至关重要的一步。Tomcat作为一款广泛使用的开源应用服务器,其性能受到诸多因素的影响,其中内存配置尤为关键。正确的...
修改eclipse中的tomcat内存的大小,以防止内存溢出。-------------------------------------------------------------------------------------------------------------------------------------------------------...
1. **调整JVM参数**:在Tomcat的启动脚本(如`catalina.sh`或`catalina.bat`)中,可以通过设置JVM的启动参数来控制内存大小。常用的是-Xms和-Xmx参数,分别代表初始堆内存和最大堆内存。例如,可以设置为`-Xms256m ...
### Java Excel导出Tomcat内存溢出处理方法 在Java应用开发过程中,特别是在进行大量数据处理如Excel导出等操作时,经常会遇到Tomcat服务器内存溢出的问题。内存溢出是指程序运行时申请的内存超过了系统能提供的...
Tomcat内存泄漏是Java应用服务器在运行过程中常见的问题,它可能导致系统性能下降,服务不稳定,甚至引发系统崩溃。解决这个问题需要深入理解Tomcat的内存管理机制以及如何诊断和修复内存泄漏。以下是对“tomcat内存...
1. **内存大小的选择**:设置的内存大小应基于实际的应用需求和服务器硬件资源。过大或过小都会对性能造成负面影响。 2. **监控与调整**:在调整完内存参数后,建议持续监控系统的性能表现,必要时进行微调。 3. **...
**修改TOMCAT内存的方法详解** Apache Tomcat是一款流行的开源Java Servlet容器,它用于部署和运行Java Web应用程序。在处理大型或复杂应用时,可能需要调整Tomcat的内存配置以优化性能。本文将详细介绍如何在不同...
#### 四、Tomcat内存配置 Tomcat是一款免费开源的轻量级Web服务器,常用于部署Java Web应用程序。 **1. 配置步骤** 使用Eclipse的Tomcat插件时,可以在“Window > Preferences > Tomcat > JVM Setting”中添加相应...