- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JVM调优实战.doc
JVM调优实战
付增斌
日期:2009-05-21
文档修订记录
版本 日期 撰写人 审核人 批准人 变更摘要 修订位置
目录
1 理论篇 1
1.1 多功能养鱼塘-JVM内存 1
1.2 池塘中的鱼-程序中的对象 2
1.3 养殖区域划分-JVM中的代 2
1.4 主人定期捕鱼-JVM垃圾回收 4
1.5 不同的捕鱼方式-垃圾回收器 5
1.6 捕鱼工具选择-JVM参数 7
2 实战篇 16
2.1 测试目的 16
2.2 测试环境准备 16
2.3 录制测试脚本 17
2.4 定义测试场景 17
2.5 执行初步性能测试 17
2.6 选择调优方案 18
2.7 调优后JVM监控图 21
2.8 测试结果分析 24
3 性能问题举例 25
3.1 性能症状 25
3.2 监控结果 25
3.3 原因分析 28
3.4 该系统的JVM设置 29
4 后记 29
5 附:舍得网的典型配置 30
理论篇
多功能养鱼塘-JVM内存
大鱼塘O(可分配内存): JVM可以调度使用的总的内存数,这个数量受操作系统进程寻址范围、系统虚拟内存总数、系统物理内存总数、其他系统运行所占用的内存资源等因素的制约。
小池塘A(堆内存):JVM运行时数据区域,它为类实例和数组分配的内存。堆可以是固定大小的也可以是可变大小的。其中 Heap = {Old + NEW = { Eden , from, to } }。JVM为优化或内部处理所分配的内存。它存储每一个类的结构,如一个运行时的常量池、字段和方法数据、方法的代码和构造函数。这个方法区是逻辑上堆的一部分,但依赖于实现,一个JVM可以不去回收或者压缩它。像堆一样,方法区可以固定大小的,也可以是大小可变的。方法区不是必须是连续的,它们可以是不连续的。除方法区之外,JVM总是从非堆中分配用于优化和内部处理所需的内存。例如,JIT编译器为高性能的JVM代码转换存储成本地代码而分配的内存。
整个池塘结构图如下:
查看大池塘O大小的方法为:
在命令行下用 java -XmxXXXXM -version 命令来进行测试,然后逐渐的增大XXXX的值,如果执行正常就表示指定的内存大小可用,否则会打印错误信息,示例如下:
java -Xmx3072M -version。
当一个URL被访问时,内存申请过程如下:
A. JVM会试图为相关Java对象在Eden中初始化一块内存区域
B. 当Eden空间足够时,内存申请结束。否则到下一步
C. JVM试图释放在Eden中所有不活跃的对象(这属于1或更高级的垃圾回收), 释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区
D. Survivor区被用来作为Eden及OLD的中间交换区域,当OLD区空间足够时Survivor区的对象会被移到Old区,否则会被保留在Survivor区
E. 当OLD区空间不够时,JVM会在OLD区进行完全的垃圾收集(0级)
F. 完全垃圾收集后,若Survivor及OLD区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建内存区域,则出现”out of memory错误”
短中期鱼苗养殖区-年青代(Young Generation)
年青代由一个Eden Space和两个Survivor Spaces组成,虚拟机初始时分配所有的对象到Eden Space,许多对象也是在这里死去。当它执行一个“minor GC”的时候,虚拟机将从Eden Space中移动一些残余的对象到其中的一个Survivor Spaces中。青年代就好像养鱼塘中的“中短期养殖区”一样,主人把鱼先投放到“短期养殖区”喂养,隔一段时间就开始下网捞出已经长成的那些鱼拿到集市去卖,这个过程就是从“Eden Space”中执行垃圾回收的过程。主人接着把捕捞之后剩下的“漏网之鱼”赶到“中期养殖区”继续喂养。这个“中期养殖区”就是“Survivor Spaces”,当然鱼在“中期养殖区”喂养一段时间后也要捞出那些长成的鱼去卖,这就是对“Survivor Spaces” 执行垃圾回收的过程。
Ps Eden Space: 这个内存池在对象初始化时被分配;
Ps Survivor Space: 这个内存池中包含着Eden Space 经过GC之后幸存下来的对象;
年轻代设置策略:对于响应时间优先的应用尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年
您可能关注的文档
最近下载
- 小学、初中、高中、大学英语词汇合集.pdf
- 《宿曜经》汉译版本之汉化痕迹考证.pdf
- 《珍爱生命-远离毒品》PPT【精品课件】.pptx
- 标准图集-16G519-多高层民用钢节点详图.pdf VIP
- FG5-X绝对重力仪-劳雷LAUREL.PDF
- 湖北省武汉市2023-2024学年高二上学期期中考试英语试卷(含答案).docx VIP
- 第7课 难忘的岁月(课件)(共26张ppt)赣美版初中美术八年级上册.pptx VIP
- 第一节-金属的化学性质公开课一等奖优质课大赛微课获奖课件.pptx
- 儿童绘本故事《龟兔赛跑》PPT课件(可编辑带动画).ppt
- 新北师大版五年级上册数学第四单元《多边形的面积》知识点总结(全).docx VIP
文档评论(0)