- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JVM 调优及调优实例
GC策略内存申请、对象衰老
JVM里的GC(Garbage Collection)的算法有很多种,如标记清除收集器,压缩收集器,分代收集器等等,详见HotSpot VM GC 的种类
现在比较常用的是分代收集(generational collection,也是SUN VM使用的,J2SE1.2之后引入),即将内存分为几个区域,将不同生命周期的对象放在不同区域里:young generation,tenured generation和permanet generation。绝大部分的objec被分配在young generation(生命周期短),并且大部分的object在这里die。当young generation满了之后,将引发minor collection(YGC)。在minor collection后存活的object会被移动到tenured generation(生命周期比较长)。最后,tenured generation满之后触发major collection。major collection(Full gc)会触发整个heap的回收,包括回收young generation。permanet generation区域比较稳定,主要存放classloader信息。
young generation有eden、2个survivor 区域组成。其中一个survivor区域一直是空的,是eden区域和另一个survivor区域在下一次copy collection后活着的objecy的目的地。object在survivo区域被复制直到转移到tenured区。
我们要尽量减少 Full gc 的次数(tenured generation 一般比较大,收集的时间较长,频繁的Full gc会导致应用的性能收到严重的影响)。
堆内存GC
JVM(采用分代回收的策略),用较高的频率对年轻的对象(young generation)进行YGC,而对老对象(tenured generation)较少(tenured generation 满了后才进行)进行Full GC。这样就不需要每次GC都将内存中所有对象都检查一遍。
非堆内存不GC
GC不会在主程序运行期对PermGen Space进行清理,所以如果你的应用中有很多CLASS(特别是动态生成类,当然permgen space存放的内容不仅限于类)的话,就很可能出现PermGen Space错误。
内存申请、对象衰老过程
一、内存申请过程
1. JVM会试图为相关Java对象在Eden中初始化一块内存区域;
2. 当Eden空间足够时,内存申请结束。否则到下一步;
3. JVM试图释放在Eden中所有不活跃的对象(minor collection),释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区;
4. Survivor区被用来作为Eden及old的中间交换区域,当OLD区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区;
5. 当old区空间不够时,JVM会在old区进行major collection;
6. 完全垃圾收集后,若Survivor及old区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建内存区域,则出现Out of memory错误;
二、对象衰老过程
1. 新创建的对象的内存都分配自eden。
Minor collection的过程就是将eden和在用survivor space中的活对象copy到空闲survivor space中。对象在young generation里经历了一定次数(可以通过参数配置)的minor collection后,就会被移到old generation中,称为tenuring。
2. GC触发条件
GC类型 触发条件 触发时发生了什么 注意 查看方式 YGC eden空间不足 清空Eden+from survivor中所有no ref的对象占用的内存将eden+from sur中所有存活的对象copy到to sur中一些对象将晋升到old中:?? to sur放不下的存活次数超过turning threshold中的重新计算tenuring threshold(serial parallel GC会触发此项)重新调整Eden 和from的大小(parallel GC会触发此项) 全过程暂停应用是否为多线程处理由具体的GC决定 jstat –gcutil?gc log FGC old空间不足perm空间不足显示调用System.GC, RMI等的定时触发YGC时的悲观策略dump live的内存信息时(j
您可能关注的文档
- GT-lec2-introduction-v10.ppt
- GU320a控制系统说明书.doc
- hadoop基础命令.doc
- HALF THE SKY.ppt
- Half 的用法.ppt
- HARDENING PROCESS.ppt
- hal代码分析遇到问题及解决.docx
- Hardware of MCU(微控制器的硬件组成).pptx
- HC-3550热板焊接机.doc
- HDDRegeneratorShell硬盘再生器.doc
- 小学数学教学中心理因素对计算能力的影响教学研究课题报告.docx
- 《基于物联网的智能制造设备故障预测与健康管理关键技术综述》教学研究课题报告.docx
- 初中生物组织培养技术教学在实践操作技能培养中的应用教学研究课题报告.docx
- 小学体育三项全能训练对学生综合素质的提升研究教学研究课题报告.docx
- 2024-2025学年浙江省杭州二中高一(上)月考数学试卷(7月份)+答案解析.pdf
- 工业智能化产业园项目投资计划书.docx
- 高端精密金属加工技术项目申请报告(参考范文).docx
- 普通高中体育课程体系优化与素质教育实践研究教学研究课题报告.docx
- 2024-2025学年浙江省杭州市建德市严州中学梅城校区(致远班)高一(上)月考数学试卷(9月份)+答案解析.pdf
- 促进消费升级的战略实施.docx
文档评论(0)