linux与windows下tomcat的java内存设置
Linux下修改JVM内存大小:
要添加在tomcat 的bin 下catalina.sh文件中,找到cygwin=false,在这一行的前面加入参数,具体如下# vi TOMCAT_HOME/bin/catalina.sh(默认文件内容)
1
|
export JAVA_OPTS= "-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m"
|
1
|
export JAVA_OPTS= "-server -Xms512m -Xmx1024m -Xss256k -XX:PermSize=128m -XX:MaxNewSize=256m -XX:MaxPermSize=256m"
|
以下是自己设置的另外增加一个setenv.sh文件来设置tomcat内存,给文件加上执行权限
1
2
3
4
5
6
7
|
#vi /opt/app/tomcat6/bin/setenv.sh
export JAVA_OPTS= "-server -Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:SurvivorRatio=14 -XX:+UseParallelOldGC"
或直接修改tomcat的配置文件
#vi TOMCAT_HOME/bin/catalina.sh
JAVA_OPTS= "-server -Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:SurvivorRatio=14 -XX:+UseParallelOldGC"
或
JAVA_OPTS= "-Xms512m -Xmx2048m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=512m"
|
jvm参数说明:
-server 一定要作为第一个参数,启用JDK的server版本,在多个CPU时性能佳
-Xms 启动应用时,JVM 堆空间的初始大小值(java Heap初始大小), 默认是物理内存的1/64。
-Xmx 应用运行中,JVM 堆空间的极限值( java heap最大值)。为了不消耗扩大JVM 堆控件分配的开销,将此参数和-Xms 这个两个值设为相等,考虑到需要开线程,建议将此值设置为物理内存的80%,不可超过物理内存。
-Xmn 此参数硬性规定堆空间的新生代空间大小,推荐设为堆空间大小的1/4(java heap最小值,一般设置为Xmx的3、4分之一)。
-XX:PermSize 应用服务器启动时,永久存储区的初始内存大(设定内存的永久保存区初始大小,缺省值为64M)。
-XX:MaxPermSize 应用运行中,永久存储区的极限值。为了不消耗扩大JVM 永久存储区分配的开销,将此参数和-XX:PermSize这个两个值设为相等。堆空间相关参数参数名参数说明(设定内存的永久保存区最大大小,缺省值为64M)。
-XX:SurvivorRatio=2 生还者池的大小,默认是2。如果垃圾回收变成了瓶颈,您可以尝试定制生成池设置
-XX:NewSize 新生成的池的初始大小。 缺省值为2M。
-XX:MaxNewSize 新生成的池的最大大小。 缺省值为32M。
+XX:AggressiveHeap 让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
-Xss 每个线程的Stack大小
-verbose:gc 现实垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-XX:+UseParNewGC 缩短minor收集的时间
-XX:+UseConcMarkSweepGC 缩短major收集的时间
-XX:userParNewGC 可用来设置并行收集(多CPU)
-XX:ParallelGCThreads 可用来增加并行度(多CPU)
-XX:UseParallelGC 设置后可以使用并行清除收集器(多CPU)
-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。
上面所列的JVM 参数关系到系统的性能,而其中-XX:PermSize,-XX:MaxPermSize,-Xms,-Xmx 和-Xmn 这5 个参数更是直接关系到系统的性能,系统是否会出现内存溢出。
-XX:PermSize 和-XX:MaxPermSize 分别设置应用服务器启动时,永久存储区的初始大小和极限大小;在生成环境中强烈推荐将这个两个值设置为相同的值,以避免分配永久存储区的开销,具体的值可取系统“疲劳测试”获取到的永久存储区的极限值;如果不进行设置-XX:MaxPermSize 默认值为64M,一般来说系统的类定义文件大小都会超过这个默认值。
-Xms 和-Xmx 分别是服务器启动时,堆空间的初始大小和极限值。-Xms的默认值是物理内存的1/64 但小于1G,-Xmx 的默认值是物理内存的1/4 但小于1G.在生产环境中这些默认值是肯定不能满足我们的需要的。也就是你的服务器有8g 的内存,不对JVM 参数进行设置优化,应用服务器启动时还是按默认值来分配和约束JVM 对内存资源的使用,不会充分的利用所有的内存资源。
结论:“永久存储区溢出(java.lang.OutOfMemoryError:Java Permanent Space)”乃是永久存储区设置太小,不能满足系统需要的大小,此时只需要调整-XX:PermSize 和-XX:MaxPermSize 这两个参数即可。“JVM 堆空间溢出(java.lang.OutOfMemoryError: Java heap space)”错误是JVM 堆空间不足,此时只需要调整-Xms 和-Xmx 这两个参数即可。
windows下修改JVM内存大小:
情况一:解压版本的Tomcat, 要通过startup.bat启动tomcat才能加载配置
要添加在tomcat 的bin 下catalina.bat来添加内存在
rem ----- Execute The Requested Command ---------------------------------------下
增加下面命令:
1
2
3
4
5
6
7
|
set JAVA_OPTS=-server -Xms512m -Xmx600m -XX:PermSize=128m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -XX:SurvivorRatio=14 -XX:+UseParalledlOldGC
或
set JAVA_OPTS=-server -Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
或
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m
或
set JAVA_OPTS= "%JAVA_OPTS% -server -Xms800m -Xmx3072m -XX:PermSize=512m -XX:MaxNewSize=256m -XX:MaxPermSize=1024m"
|
另翻注(详细解释):
常见JVM参数配置汇总
堆设置
-Xms:初始堆大小
-Xmx:最大堆大小
-XX:NewSize=n:设置年轻代大小
-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:
Survivor=3:2,一个Survivor区占整个年轻代的1/5
-XX:MaxPermSize=n:设置持久代大小
收集器设置
-XX:+UseSerialGC:设置串行收集器
-XX:+UseParallelGC:设置并行收集器
-XX:+UseParalledlOldGC:设置并行年老代收集器
-XX:+UseConcMarkSweepGC:设置并发收集器
垃圾回收统计信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
并行收集器设置
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
并发收集器设置
-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。
linux与windows下tomcat的java内存设置相关推荐
- linux增量安装tomcat_linux与windows下tomcat的java内存设置
Linux下修改JVM内存大小: 要添加在tomcat 的bin 下catalina.sh文件中,找到cygwin=false,在这一行的前面加入参数,具体如下# vi TOMCAT_HOME/bin ...
- linux配置tomcat内存配置文件,Linux与Windows下tomcat内存设置
Linux下修改JVM内存大小: 要添加在tomcat 的bin 下catalina.sh文件中,找到cygwin=false,在这一行的前面加入参数,具体如下# vi TOMCAT_HOME/bin ...
- linux编译c如何延时,linux和windows下,C/C++开发的延时函数,sleep函数
简介: 函数名: sleep 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); 在VC中使用带上头文件 #include 在gcc编译器中,使用 ...
- git学习笔记——Linux和Windows下git的基本操作
git学习笔记--Linux和Windows下git的基本操作 github主页:https://github.com/Taot-chen 一.Linux环境 1.安装git sudo apt-get ...
- linux 创建线程函数吗,[笔记]linux下和windows下的 创建线程函数
linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include #define CreateThreadEx(tid,threadFun,args) ...
- android sdk模拟器在linux和windows下的性能比较
android的模拟器运行速度之慢是众所周知的,据说在linux下的性能较windows有大幅的提升,但是个人感觉在linux下也快不到哪儿去. 为了证实一下linux下到底能比windows下能快多 ...
- linux与windows下开发,Linux 与 Windows下开发感受
Linux 和 Windows环境下开发各有优点.以下Linux 下使用感受是在Ubuntu11.04,别的发行版还没试过. 至于各自的缺点,都可以通过各种方法,得到或多或少地解决.至于要花费多大的精 ...
- Linux和Windows下部署BeetleX服务网关
有朋友希望写一篇BeetleX服务网关部署到Linux和windows下并以服务的方式运行的介绍文章.接下详细介绍如何做并简单介绍一下网的使用.首先需要在官网(beetlex-io.com)下载对应版 ...
- linux和windows下忘记mysql密码的几种找回方法
linux和windows下忘记mysql密码的几种找回方法 关于linux忘记mysql密码处理方法,下面提供了5种linux忘记mysql密码找回方法哦. 方法一(先进入root权限): # /e ...
最新文章
- 今生不再见, VS Code !
- 动态库和静态库的创建
- One Order CLOSING date修改后的执行原理
- 【2018.3.31】模拟赛之三-ssl2408 比萨【搜索,dfs】
- python是什么牌子主机_python 收集主机信息
- 搭建AD域环境时出现错误,未能为域创建GPO 出现扩展错误解决办法
- 火焰传感器工作原理_水流传感器的工作原理和故障分析
- [导入]FtpClient Library升级到4.x
- 强一致性、弱一致性、最终一致性
- JAVA链表中的回文链表结构
- win10右键一直转圈_win10投屏不能使用的解决办法
- c语言小鱼的游泳时间,信息学奥林匹克竞赛-小鱼的游泳时间
- podman 开机自启
- 标签类目体系(面向业务的数据资产设计方法论)-读书笔记2
- 机器学习笔记 - 加速神经网络训练的 7 个技巧
- 【比特鹏哥C语言_1.初识C语言】
- 中国地质调查局:汶川地震原因已有初步结论
- cocosCreator 控制音乐,音效的图片转换
- 华为网络安全论述题解析(2)
- 再见 Typora,这个开源的 Markdown 编辑器爱了。
热门文章
- 如何将文件地址转为url_Node.js 源码解析 util.promisify 如何将 Callback 转为 Promise
- driver.class.php line: 109,thinkphp3.2.3 无法加载数据库驱动: Think\Db\Driver\
- virsh 关机_KVM virsh常用命令篇
- mardown文件图片技巧
- 动态语言与静态语言的区别
- python无法识别vim中文代码
- python写货币转换_如何在Python中将货币字符串转换为浮点数?
- python3如何使用mysql_python3怎么用sqlalchemy操作mysql
- tampermonkey参数
- 项目范围管理:项目范围控制