- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
为任务关键型Java应用优化垃圾回收(上)-编程开发技术
为任务关键型Java应用优化垃圾回收
(上)
本文由ImportNew -文 学敏 翻译自mgm-tp。欢迎加入翻译小组。转载谙见文末要求。
目录
?上篇
?下篇
最近,我有机会去测试并优化几个基于Java购物和门户网站程序,它们运行在 Sun/Oracle的JVM上。访问量最高的几个应用在德国。在很多情况下,垃圾回 收是Java服务器性能的一个关键因素。本文中,我们会研究一些先进垃圾回收 算法思想以及一些重要的调节参数。我们会在各种真实场景中比较这些参数。
从垃圾回收的角度來看,Java服务器程序可以冇广泛多样的需求:
一些高流量应用需要响应大量请求并创建非常多的对象。有时候,一些使用了高资 源消耗框架的中等流量应用也会遇到同样的问题。总之,対垃圾回收來说,如何有 效地清理这些生成的对彖是一个很大的挑战。
另外,一些应用需要长时间运行并且在运行过程提供稳定的服务,要求性能不会随 着吋间而慢慢变差或者突然恶化。
某些场景需要严格限制用户响应时间(比如网络游戏或者投注应用等),儿乎不允许 额外的GC暂停。
在很多场景中,你可以通过不同的优先级将儿种需求结合起来。我的儿个样例程 序对第一点要求比第二点要高很多,但是绝大部分程序不会同吋对这三方面要求 都高。这给你留下了足够权衡的空间。
默认配置下JVM GC的性能
JVM有很多改进,但仍然不能在程序运行时对任务做优化。除了上面提到的三点, 默认的JVM设置还有一个优先级仅次于它们的需求:减小内存山用。考虑到成千 上万的用户并不是在内存充足的服务器上运行。对很多电子商务产品也很重要, 因为这些应用大部分时间被配置在开发笔记本上运行,而不是在商用服务器上。 因此,如果你的服务器配置着最小的堆空间和GC参数,比如下面这样配置,
java -Xmx1024m -XX:MaxPermSize=256m -cp Portal, jar my. portal. Portal 这样肯定会导致系统运行不够高效。首先,好的做法不仅配置内存最大限制,也 需要配置初始内存大小,以避免服务器在启动过程中逐步增加内存。否则代价会 很大。当知道服务器需要多少内存吋(你应该及吋地查明),最好将初始内存大 小与最大内存设置相等。可以通过以下JVM参数來设置:
-Xms1024m -XX:PcrmSi zc=256m
最后一个经常在JVM配置的基本选项是配置新生代堆内存大小,与上面设置的方 式类似:
-XX:NewSi ze二200m -XX:MaxNewSi ze二200m
下面的章节会对上面的配置以及更复杂的配置给岀解释。首先,让我们看一个门 户网站的应用,它运行在一台相当慢的测试主机上。当进行负载测试时,它的垃 圾回收是怎么工作的:
图1堆大小稍微优化后的JVM在25小时左右的GC行为(-Xms 1024m -Xmx 1024m -XX:NewSize=200m -XX:MaxNewSize=200m)
其中,蓝色的曲线农示总的堆内存占用量随时间的变化,垂宜的灰色线条农示 GC暂停的间隔。
除了曲线图,GC操作的关键指标和性能显示在最右边。首先我们看一卜?在这次 测试屮,垃圾被创建(和回收)的平均量。30. 5MB/s的数值被标为黄色,因为 这是一个相当大但还可以的垃圾主成速率,对一个引导性的GC调优例子而言还 算可以。其他值表示JVM在清理这些垃圾吋的表现:99. 55%的垃圾是在新生代屮 被清理的,老年代的只占0. 45%O这个结果相当不错,因此标为绿色。
Z所以有这样的结果,可以从GC引入的暂停间隔看出來(以及处理用户请求的 工作线程):冇很多但很短暂的新生代GC间隔,平均每6s—次,持续时间不会 超过50ms。这些暂停使JVM停止运行的时间占总时间的0.77%,但是毎次暂停对 等待服务器响应的用户来说完全感觉不到。
另一方面,老年代GC的暂停只占总时间的0. 19%o但是,在这段时间内老年代 GC只清理了 0. 45%的垃圾,而新生代GC用占0. 77%的时间清理了 99. 55%的垃圾。 可见,与新生代GC相比,老年代GC是多么低效。另外,老年代GC的暂停平均 触发速率不到一个小时一次,但平均持续时间可达到8s,最大异常值甚至达到 19s。由于这些暂停会真正地停止JVM处理用户请求的线程,因此暂停应尽量不 频发且持续时间短。
通过以上观察可以得出分代垃圾回收的基木调优目标:
?新生代GC尽量回收多的垃圾,避免老年代GC频发H持续时间较短。
分代垃圾回收的基本思想与堆内存大小调整
先从下图开始。这个图可以通过JDK工具得到,比如jstat或者jvisualvm以及 它的visualgc插件:
图2 JVM的堆内存结构,包括新生代的子分区(最左列)
您可能关注的文档
- 人大银行会计习题答案.docx
- 人大主任 强化五种意识在围绕中心服务大局中依法履行职责.doc
- 人对照检查材料.doc
- 人二下册语文会写、会认字组词.docx
- 人工智能概念股一网打尽.doc
- 人和动物生命活动调节练习题.docx
- 人际关系紧张案例分析报告.docx
- 人际关系与沟通教案.docx
- 人九下综合性学习练习题.docx
- 人口与城市知识点加配套习题.docx
- 2025年跨境电商健身器材电商仓储配送体系智能化升级对物流行业效率提升的促进作用.docx
- 2025年湖北三峡大学人才引进169人笔试模拟试题附答案详解.docx
- 2025年康复工程产业智能化技术创新路径研究报告.docx
- 生物制药行业2025年生物材料在药物载体中的应用与市场前景报告.docx
- 2025-2026学年初中道德与法治七年级上册(2024)统编版(部编版)(2024)教学设计合集.docx
- 2025年湖北三峡大学人才引进169人笔试模拟试题及参考答案详解.docx
- 2025年跨境电商健身器材电商仓储配送体系创新优化策略报告.docx
- 智慧医疗与物联网技术在医院管理中的应用研究报告.docx
- 2025年跨境电商健身器材电商仓储配送体系安全风险防控策略报告.docx
- 土壤污染防控2025年生态环境监测网络技术升级报告.docx
文档评论(0)