Tomcat 设置JVM内存大小

设置Tomcat JVM虚拟机内存大小(Linux) 根据您的需求,取消注释并修改相应的行。最大堆内存参数(-Xmx)定义了JVM可用于分配堆内存的最大值。您可以根据您的需求将其设置为适当的值。初始堆内存参数(-Xms)定义了JVM在启动时分配的堆内存大小。在Linux系统中,Tomcat的启动脚本通常位于Tomcat安装目录的bin目录下。在启动脚本中,您可以找到一段注释掉的代码块,用于设置JVM参数。通过按照上述步骤,在Linux系统上设置Tomcat的JVM虚拟机内存大小。在Linux系统上,您可以通过以下步骤来设置Tomcat的JVM虚拟机内存大小。 阅读详情

我的服务器的配置:

 # OS specific support.  $var _must_ be set to either true or false.

JAVA_OPTS="-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m"

 

正文:

 

常见的内存溢出有以下两种:

Java.lang.OutOfMemoryError: PermGen space

java.lang.OutOfMemoryError: Java heap space

 

---------------------------------------------------------

这里以tomcat环境为例,其它WEB服务器如jboss,weblogic等是同一个道理。


一、java.lang.OutOfMemoryError: PermGen space

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,
这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,
它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对
PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,
这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小
超过了jvm默认的大小(4M)那么就会产生此错误信息了。
解决方法: 手动设置MaxPermSize大小
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。

 

二、java.lang.OutOfMemoryError: Java heap space
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,
其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可
进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 
解决方法:手动设置Heap size

----------------------------------------------------------

 

Linux下修改JVM内存大小:

要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。注意引号要带上,红色的为新添加的.

# OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
cygwin=false

 

windows下修改JVM内存大小:

情况一:解压版本的Tomcat, 要通过startup.bat启动tomcat才能加载配置

要添加在tomcat 的bin 下catalina.bat 里

rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%后面添加,红色的为新添加的.

set JAVA_OPTS=-Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true

 

情况二:安装版的Tomcat下没有catalina.bat

windows服务执行的是bin/tomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.

修改注册表HKEY_LOCAL_MACHINE/SOFTWARE/Apache Software Foundation/Tomcat Service Manager/Tomcat5/Parameters/JavaOptions
原值为
-Dcatalina.home="C:/ApacheGroup/Tomcat 5.0"
-Djava.endorsed.dirs="C:/ApacheGroup/Tomcat 5.0/common/endorsed"
-Xrs

加入 -Xms300m -Xmx350m 
重起tomcat服务,设置生效

 

---------------------------------------------------------

各参数的比例:

Xmx 与PermSize的和不可超过JVM可获得的总内存

PermSize不可大于Xmx

================

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

可以给Java虚拟机设置使用的内存,但是如果你的选择不对的话,虚拟机不会补偿。可通过命令行的方式改变虚拟机使用内存的大小。如下表所示有两个参数用来设置虚拟机使用内存的大小。
参数
描述
-Xms
JVM初始化堆的大小
-Xmx
JVM堆的最大值
这 两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用程序在大负载的 情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始化,虚拟机就必须 重复地增加内存来满足使用。由于这种原因,我们一般把-Xms和-Xmx设为一样大,而堆的最大值受限于系统使用的物理内存。一般使用数据量较大的应用程 序会使用持久对象,内存使用有可能迅速地增长。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最 大值设置为可用内存的最大值的80%。
Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。
Windows下,在文件/bin/catalina.bat,Unix下,在文件/bin/catalina.sh的前面,增加如下设置:
JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'
需要把这个两个参数值调大。例如:
JAVA_OPTS='-Xms256m -Xmx512m'
表示初始化内存为256MB,可以使用的最大内存为512MB。
另 外需要考虑的是Java提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分析 实际的垃圾收集的时间和频率来调整。如果堆的大小很大,那么完全垃圾收集就会很慢,但是频度会降低。如果你把堆的大小和内存的需要一致,完全收集就很快, 但是会更加频繁。调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。在基准测试的时候,为保证最好的性能,要把堆的大小 设大,保证垃圾收集不在整个基准测试的过程中出现。
如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过 3-5 秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究 垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。
Tomcat 5常用优化和配置
1、JDK内存优化:
Tomcat默认可以使用的内存为128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:
JAVA_OPTS='-Xms[初始化内存大小] -Xmx[可以使用的最大内存]
一般说来,你应该使用物理内存的 80% 作为堆大小。
2、连接器优化:
在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:
maxThreads:
Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值150。
acceptCount:
指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值10。
minSpareThreads:
Tomcat初始化时创建的线程数。默认值25。
maxSpareThreads:
一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值75。
enableLookups:
是否反查域名,默认值为true。为了提高处理能力,应设置为false
connnectionTimeout:
网络连接超时,默认值60000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
maxKeepAliveRequests:
保持请求数量,默认值100。
bufferSize:
输入流缓冲大小,默认值2048 bytes。
compression:
压缩传输,取值on/off/force,默认值off。
其中和最大连接数相关的参数为maxThreads和acceptCount。如果要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于*作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。
3、tomcat中如何禁止和允许列目录下的文件
在{tomcat_home}/conf/web.xml中,把listings参数设置成false即可,如下:
<servlet>
...
< init-param>
< param-name>listings</param-name>
< param-value>false</param-value>
< /init-param>
...
< /servlet>
4、tomcat中如何禁止和允许主机或IP地址访问
<Host name="localhost" ...>
...
< Valve className="org.apache.catalina.valves.RemoteHostValve"
allow="*.mycompany.com,www.yourcompany.com"/>
< Valve className="org.apache.catalina.valves.RemoteAddrValve"
deny="192.168.1.*"/>
...
< /Host>
服务器的配置

JAVA_OPTS='-server -Xms512m -Xmx768m -XX:NewSize=128m -XX:MaxNewSize=192m -XX:SurvivorRatio=8'

原文地址:http://blog.youkuaiyun.com/unesco3187/article/details/48290469

使用IDF和VSCode构建ESP32的开发环境 本文主要介绍构建使用IDF和VS-CODE 工具构建ESP32的开发环境的详细步骤,还应用IDF和VS CODE创建ESP32的项目文件,并实现编译和下载功能。 阅读详情

相关推荐

手机拍照也能玩高光谱?教你用TensorFlow Lite在Android上实现实时RGB转高光谱

本文介绍了如何利用TensorFlow Lite在Android设备上实现实时RGB到高光谱的图像重构技术。通过深度学习模型优化和移动端部署策略,使智能手机具备专业级光谱分析能力,适用于农业检测、化妆品分析等多个领域。

weixin_29091105的博客 247

Tomcat和JDK的内存配置

1、jvm内存管理机制: 1)堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是...

dhmkjv0619的博客 852

android OTA升级之后,apk崩溃无法启动

也就是说,我们这个高低版本是fingerprint相同的情况,这个问题追述到jenkins编译,启动job时会初始化一个BUILD_NUMBER值,这个值正好跟Android的build系统的名称重复,这就导致Android build系统那一套拼接时间戳的值不会走,因为jenkins一启动就会定义该值,而我们jenkins服务器迁移过,这个值又会从1开始累计,导致前后版本都是16,从而导致fingerprint一致。问题背景:系统版本从低版本升级到高版本后,apk崩溃启动失败。硬件平台:QCS6125。

kevin's cache的专栏 1347

tomcay java虚拟机内存_修改TOMCAT的JVM虚拟机内存大小几种方式

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。经常会出现Java.lang.OutOfMemoryError: Java heap space 即JVM Heap溢出的错误。对此有以下几种方法可以选用:第一种方法:修改catalina.bat/catalina.sh文件1.linux 下调整tomcat的内存设置修改bin目录下catalina.sh...

weixin_33327330的博客 763

医疗 java 实战:2.HIS(医院信息系统)对接

HIS(医院信息系统)是医疗机构的核心管理系统,负责患者的挂号、医嘱、收费、病历管理等核心业务。为了与其他系统(如 LIS、PACS、EMR、医保系统)实现数据互通,HIS 需要进行多种方式的对接。:HIS 需要确保与 LIS、PACS、EMR 之间的数据实时同步,避免数据丢失或延迟。:医生在 HIS 开医嘱后,检验信息需要同步到 LIS,LIS 处理检验后返回结果。:HIS 与 LIS、PACS、EMR 交互患者信息、医嘱、检验报告。:HL7 V2.x 消息(ADT、ORM、ORU 等)。

weixin_44743723的博客 3283

Vivado 2018.3 SDK烧写bin文件避坑指南:如何解决QSPI模式下的常见错误

本文深入解析了在Vivado 2018.3 SDK中为Zynq FPGA烧写QSPI Flash时遇到的常见问题,特别是启动模式为QSPI时出现的警告与失败。文章从Zynq启动机制入手,提供了修改FSBL代码以强制使用JTAG模式、调整硬件配置等核心解决方案,并分享了实战案例与最佳实践,帮助开发者高效避坑,确保bin文件烧写成功。

arduino9maker的博客 389

配置tomcat内存大小(windows、linux)

配置tomcat内存大小(windows、linux)

weixin_52116015的博客 2万+

基于奥比中光Orbbec Astra Pro与ROS实现实时3D环境建模:orb_slam2实战指南

本文提供了一份详细的实战指南,介绍如何使用奥比中光Orbbec Astra Pro深度摄像头与ROS系统,部署并运行ORB-SLAM2算法,实现实时3D环境建模与定位。内容涵盖从驱动安装、环境配置、算法编译到摄像头标定与性能调优的全流程,旨在帮助开发者快速搭建一套高性价比的视觉SLAM系统。

weixin_29054399的博客 336

Windows 设置 Tomcat 的 JVM 内存大小

Windows 设置 Tomcat 的 JVM 内存大小

杜小舟的博客 3351

图神经网络实战——总结 | 图神经网络展望

短短数年时间,图神经网络 (Graph Neural Networks, GNN) 已经成为一种重要的深度学习架构,并且已经广泛应用于各个行业。通过本专栏的学习,能够对图学习和 GNN 领域有一个全面的了解,并能为各种应用设计、构建GNN模型。

盼小辉丶的博客 8583

2018安徽省青少年信息学奥林匹克(AHOI)初中组

12 种合法的排列分别为:1, 3, 2, 4, 2, 3, 1, 4, 3, 1, 4, 2, 3, 2, 4, 1, 1, 3, 4, 2, 2, 3,4,1,1,4,2,3, 2,4,1,3, 4,1,3,2, 4,2,3,1, 1,4,3,2, 2,4,3,1。分为 2 组,一组的队员实力值是{4, 5, 2, 3},一组是{-4, -3, -5},其中最小的组人数为 3,可以发现没有比 3 更优的分法了。[0, 1, 1, 2]同样不是合法的分组方案,因为出现了两个实力值为 1 的选手。

weixin_42358969的博客 1143

tomcat 配置内存大小

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。      有以下几种方法可以选用:  第一种方法:       Windows下,在文件/bin/catalina.bat,      Unix下,在文件/bin/catalina.sh的前面,      增加如下设置: JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最

ying890的专栏 1830

【蒸汽幻想台服新版商业端】2025最新整理单机一键即玩镜像端+WIN系半手工端+PC客户端+网页注册+网页管理后台+教程【站长亲测】

MMORPG端游【蒸汽幻想台服新版商业端】2025最新整理单机一键即玩镜像端+WIN系半手工端+PC客户端+网页注册+网页管理后台+教程。

百创科技 533

设置TOMCAT的JVM虚拟机内存大小

设置TOMCAT的JVM虚拟机内存大小 Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。有以下几种方法可以选用: 第一种方法: Windows下,在文件/bin/catalina.bat,Unix下,在文件/bin/catalina.sh的前面,增加如下设置: JAVA_OPTS='-Xms【初始化内存大小】-Xmx【可以使用的最大内存】'

飞火龙在天的博客 3349

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Tomcat的JVM内存大小如何设置?【转】

Tomcat的JVM内存大小如何设置?【转】 [转]:专家答疑 Tomcat的JVM内存大小如何设置? 本文和大家重点讨论一下如何设置Tomcat的JVM内存大小,JAVA程序启动时JVM都会分配一个初始内存和最大内存给这个应用程序。这个初始内存和最大内存在一定程度都会影响程序的性能。 如何设置Tomcat的JVM内存大小 Tomca...

z350205941的专栏 176

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Tomcat设置JVM内存大小

在tomcat 的 bin/catalina.sh  文件中的开始位置增加如下参数: #JAVA_OPTS='-Xms[初始大小] -Xmx[最大值] -XX:MaxPermSize=[最大永久存储内存值]' JAVA_OPTS='-Xms128m -Xmx1024m -XX:MaxPermSize=128m' 或 catalina.bat 文件 #JAVA

sky663的专栏 1003

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

Linux上:<br />在/usr/tomcat/bin/catalina.sh中加入<br />export JAVA_OPTS='-Xms[初始化内存大小] -Xmx[可以使用最大内存]'<br />例如:export JAVA_OPTS='-Xms256m -Xmx512m' <br />Windows上:<br />在catalina.bat里设置初始内存和最大内存: <br />set CATALINA_OPTS="-Xms30m -Xmx512m" <br />检查一下Catalina.ba

liaochangfa的专栏 779

linux 设置java内存大小_Linux 下修改Tomcat使用的JVM内存大小

我的服务器的配置:# OS specific support. $var _must_ be set to either true or false.JAVA_OPTS="-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m"正文:常见的内存溢出有以下两种:java.lang.OutOfMemoryError:...

weixin_35411439的博客 2291

myeclipse设置tomcat所占jvm的内存大小

myeclipse设置tomcat所占jvm的内存大小解决JAVA内存溢出问题:    windows-->preference-->MyEclipse-->Servers-->Tomcat-->Tomcatx.x-->JDK 在右边的Optional Java VM arguments里加上:-Xms256m -Xmx512m 其中-X是jvm的Head分配的参数 -Xms为初始Heap

scalad 1249

MyEclipse2017 下查询和设置服务器 Tomcat JVM内存大小

1.为什么要设置JVM内存大小呢? 因为如果你的程序运行时超过JVM默认内存大小,就不会报传说中内存溢出异常。Exception in thread "main" java.lang.OutOfMemoryError: Java heap spaceat junit.Bean.main(Bean.java:25)2.设置步骤一.MyEclipse2017 下的打开方式 还有一种run-&gt;ru...

qq_28863045的博客 3108
下一篇: visualvm工具使用教程
落叶_201306
博客等级 码龄12年 35粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值