没有合适的资源?快使用搜索试试~ 我知道了~
首页Tomcat JVM的参数调优
Tomcat JVM的参数调优
需积分: 32 7 下载量 94 浏览量
更新于2023-06-14
评论 1
收藏 1.83MB DOCX 举报
详细讲述了JVM参数的调优方法和步骤.并描述了GC垃圾回收机制的瓶颈,以及出现内存溢出的原因。
资源详情
资源评论
资源推荐
设置 的 虚拟机内存大小
我要评论字号:TT
这里向大家描述一下如何设置 !"# 的 $%! 虚拟机内存大小,& 本身不能直接
在计算机上运行,需要依赖于硬件基础之上的操作系统和一个 '( 虚拟机。
#): 大数据全球技术峰会低价抢票中
你知道如何设置 !"# 的 $%!
虚拟机内存大小吗,这里和大家分享一下,$#%# 程
序启动时 $%! 都会分配一个初始内存和最大内存给这个应用程序。这个初始内存和最大内
存在一定程度都会影响程序的性能。
设置 的 虚拟机内存大小
& 本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个
'( 虚拟机。$#%# 程序启动时 $%! 都会分配一个初始内存和最大内存给这个应用程序。
这个初始内存和最大内存在一定程度都会影响程序的性能。比如说在应用程序用到最大内
存的时候,$%! 是要先去做垃圾回收的动作,释放被占用的一些内存。所以想调整
& 的启动时初始内存和最大内存就需要向 $%! 声明,一般的 $#%# 程序在运行都可
以通过中**+ 来调整应用程序的初始内存和最大内存。
这两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向
系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用程序在大负载的情况
下会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机启动时设置使
用的内存比较小而在这种情况下有许多对象进行初始化,虚拟机就必须重复地增加内存来
满足使用。由于这种原因,我们一般把* 和*+ 设为一样大,而堆的最大值受限于
系统使用的物理内存。一般使用数据量较大的应用程序会使用持久对象,内存使用有可能
迅速地增长。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导
致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的 ,-。
& 默认可以使用的内存为 ,!.,在较大型的应用项目中,这点内存是不够
的,需要调大。有以下几种方法可以选用:
第一种方法:
/0 下,在文件121&32&,4+ 下,在文件121&3 的前面,
增加如下设置:
$#%#5 6789*【初始化内存大小】*+【可以使用的最大内存】9
需要把这个两个参数值调大。例如:
$#%#5 6789**+9
表示初始化内存为 !.,可以使用的最大内存为 !.。
第二种方法:环境变量中设
变量名:$#%#5 67
变量值:**+
第三种方法:前两种方法针对的是 2 目录下有 &32& 的情况(比如直接解压
的 & 等),但是有些安装版的 & 下没有 &32&,这个时候可以采用如
下方法,当然这个方法也是最通用的方法:
打开 &&:1;21;&&+,点击 $( 选项卡,然后将会发现其中有
这么两项:<&3=3 和 !+>=3<&3=3 这个就
是初始化设置的内存的大小。!+>=3 这个是最大内存的大小设置完了就
按确定然后再重启 !"# 你就会发现 && 中 '( 可用的内存改变了。
另外需要考虑的是 $( 提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收
集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分析实际的垃圾
收集的时间和频率来调整。如果堆的大小很大,那么完全垃圾收集就会很慢,但是频度会
降低。如果你把堆的大小和内存的需要一致,完全收集就很快,但是会更加频繁。调整堆
大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。在基
准测试的时候,为保证最好的性能,要把堆的大小设大,保证垃圾收集不在整个基准测试
的过程中出现。
如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过
秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研
究垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 ,-作为堆大小。当增
加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。
一个要注意的地方:建议把内存的最高值跟最低值的差值缩小,不然会浪费很多内存
的,最低值加大,最高值可以随便设,但是要根据实际的物理内存,如果内存设置太大了?
比如设置了 ! 最大内存?但如果没有 ! 可用内存?& 就不能启动,还有可能
存在内存被系统回收,终止进程的情况。
详解 配置 参数步骤
020>我要评论字号:TT
& 默认可以使用的内存为 ,!.,在较大型的应用项目中,这点内存是不够的,
需要调大?并且 & 本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系
统和一个 '( 虚拟机。
#): 大数据全球技术峰会低价抢票中
这里向大家描述一下如何使用 & 配置 $%!
参数,& 本身不能直接在计算
机上运行,需要依赖于硬件基础之上的操作系统和一个 '( 虚拟机。您可以选择自己的需
要选择不同的操作系统和对应的 $)@ 的版本,但还是推荐您使用 7> 公司发布的 $)@。
配置 参数
& 本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个
'( 虚拟机。您可以选择自己的需要选择不同的操作系统和对应的 $)@ 的版本(只要是符
合 7> 发布的 $( 规范的),但我们推荐您使用 7> 公司发布的 $)@。确保您所使用的
版本是最新的,因为 7> 公司和其它一些公司一直在为提高性能而对 '( 虚拟机做一些
升级改进。一些报告显示 $)@ 在性能上比 $)@ 提高了将近 -到 -。
可以给 $( 虚拟机设置使用的内存,但是如果你的选择不对的话,虚拟机不会补偿。
可通过命令行的方式改变虚拟机使用内存的大小。如下表所示有两个参数用来设置虚拟机
使用内存的大小。
参数aaaaaa描述
*$%! 初始化堆的大小
*+$%! 堆的最大值
这两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向系
统申请的内存的大小。一般而言,这个参数不重要。但是有的应用程序在大负载的情况下
会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机启动时设置使用
的内存比较小而在这种情况下有许多对象进行初始化,虚拟机就必须重复地增加内存来满
足使用。
由于这种原因,我们一般把* 和*+ 设为一样大,而堆的最大值受限于系统使
用的物理内存。一般使用数据量较大的应用程序会使用持久对象,内存使用有可能迅速地
增长。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用
服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的 ,-。
& 默认可以使用的内存为 ,!.,在较大型的应用项目中,这点内存是不够
的,需要调大。
/0 下,在文件121&32&,4+ 下,在文件121&3 的前面,
增加如下设置:
$#%#5 6789*【初始化内存大小】
*+【可以使用的最大内存】9
需要把这个两个参数值调大。例如:
1. JAVA_OPTS='-Xms256m-Xmx512m'
2.
表示初始化内存为 !.,可以使用的最大内存为 !.。
另外需要考虑的是 $( 提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收
集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分析实际的垃圾
收集的时间和频率来调整。如果堆的大小很大,那么完全垃圾收集就会很慢,但是频度会
降低。如果你把堆的大小和内存的需要一致,完全收集就很快,但是会更加频繁。调整堆
大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。在基
准测试的时候,为保证最好的性能,要把堆的大小设大,保证垃圾收集不在整个基准测试
的过程中出现。
如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过
秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研
究垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 ,-作为堆大小。当增
加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。
为什么 程序占用的内存比实际分配的多
,开源中国a我要评论字号:TT
堆只是影响 $( 程序占用内存数量的一个因素。要更好的理解你的 $( 程序将会占用多
大的内存需要先了解有哪些因素会影响到内存的占用。这些因素包括
#): 大数据全球技术峰会低价抢票中
很多人错误的认为运行 $( 程序时使用*+ 和* 参数指定的就是程序将会占用
的内存,但是这实际上只是 $( 堆对象将会占用的内存。堆只是影响 $( 程序占用内存
数量的一个因素。要更好的理解你的 $( 程序将会占用多大的内存需要先了解有哪些因素
会影响到内存的占用。这些因素包括:
对象
类
线程
本地数据结构
本地代码
每个因素对内存占用的影响又会随着应用程序、运行环境和系统平台的不同而变化,
那怎样计算总的内存占用量?是的,想得到一个准确的数字不是那么容易,因为你很难控
制本地A&(部分。你能控制的部分只有堆大小:*+,类占用的内存:
**!+6=7B,还有线程栈:* 控制每个线程占用的内存。注意当把栈大小设置
的太小时会导致 7&C (=D 异常、程序出错。所以,计算公式为:
*+E**!+6=7BE线程数aF*E其它内存
其它内存部分取决于本地代码占用的内存,如 A< 、C& 缓冲区、$A< 等。它一般
大约是 '( 内存的 -左右。所以假设我们有下面的 $%! 参数和 个线程:
*+**!+6=7B8*C
那么 '( 进程至少会占用内存数量为:EEFCEF
8
我一般使用F堆最大值来作为一个近似值表示一个 && 进程会需要的最小内
存,如果你有需要增加 !+6=7B 到 ! 以上的应用这个值可以更大些。
如果你使用这个来衡量你的系统将会占用多少内存要记住你需要为系统和其它运行在
系统上的程序留下足够的内存,否则会导致系统使用过多的虚拟内存,这样会降低性能。
原文链接:&&11&1G>&15
深入学习 内存设置原理和调优
0(,我要评论字号:TT
你知道 $%! 内存设置原理吗,这里和大家分享一下,因为如果默认的 '( 虚拟机的大小
比较小,在对大数据进行处理时 '( 就会报错:'(3 >& H!=I===。
#): 大数据全球技术峰会低价抢票中
这里向大家描述一下 $%!
内存设置原理和内存调优,设置 '( 内存的方法,对于单独
的3,可以用下面的方法对 & 运行时的 '( 内存进行设置。
内存设置原理
默认的 '( 虚拟机的大小比较小,在对大数据进行处理时 '( 就会报错:
'(3 >& H!=I===。设置 '( 内存的方法,对于单独的3,可以用下面
的方法对 & 运行时的 '( 内存进行设置。
'(**+&
* 是设置内存初始化的大小
*+ 是 $%! 内存设置中设置最大能够使用内存的大小(最好不要超过物理内存大
小)
在 23 中,可以在 &=&230 中对每个 0 虚拟内存的大小进
行设置,默认的设置是在 I(0 里面。简单介绍了 $%! 内存设置,下面我们看
一下 $%! 内存的调优。
内存的调优
设定与垃圾回收
$(: 分为 个区,J>, 30 和 6=&。J> 保存刚实例化的对象。
当该区被填满时,K" 会将对象移到 30 区。6=& 区则负责保存反射对象,本文不
讨论该区。$%! 的 : 分配可以使用* 参数设定,
$%! 有 个 K" 线程。
第一个线程负责回收 : 的 J> 区。
第二个线程在 : 不足时,遍历 :,将 J> 区升级为 30= 区。 30= 区的
大小等于*+ 减去*,不能将* 的值设的过大,因为第二个线程被迫运行会降低
$%! 的性能。
为什么一些程序频繁发生 K"?有如下原因:
剩余43页未读,继续阅读
HKU-TANGYU
- 粉丝: 34
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0