关闭

Java开发者应当理解的专业术语

发表于:2016-8-15 10:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:xiaoheike    来源:51Testing软件测试网采编

  本文将和你分享一些 JVM “专业术语”,程序员在对 JVM 做任何的性能和垃圾回收调整之前理解和记住这些“专业术语”是非常重要的。在文章的最后还提供一些小技巧,包括一些高性能微调的最佳实践。关于 Oracle HotSpot 的并发垃圾回收器,例如 CMS 和 G1 的进一步建议将在后续文章中探讨。 在深入阅读之前,我建议你先熟悉《JVM 详细 GC 输出日志》。获得这个 JVM 数据分析技能是至关重要的,特别是当与更加复杂的 APM 技术结合使用的时候。
  JVM 专业术语
  分配率(Allocation Rate) Java 对象被分配到年轻代内存空间,又名 “短暂的”对象
  转换率(Promotion Rate) Java 对象从年轻代转移到年老代
  存活数据(LIVE Data) 被分配在年老代内存空间的 Java 对象,又名 “长寿”对象
  暂停应用程序运行进行垃圾回收(Stop-the-world Collection) 垃圾回收,例如完全垃圾回收,造成你的应用程序线程短暂性挂起直到垃圾回收完成
  第一件事情:JVM 垃圾回收日志
  提供有关 Java 堆栈和垃圾回收活动黑盒内的详细细节
  使用工具,例如 GCMV(垃圾回收内存可视化),用于评估 JVM 暂停时间和内存分配率,以及可以手工调整代内存大小(译者注:这里的“代”指 JVM 中的年轻代,年老代以及永久代)。
  分配和转换率
  跟踪程序的分配率和转换率对于垃圾回收性能优化是非常重要的。
  GCAdaptiveSizePolicy 参数是 JVM 不可分割的一部分,保持该参数有效。仅在必要时手动调整。
  JVM_YG_allocation_rate
  JVM_OG_allocation_rate
  存活数据计算
  一次完全垃圾回收之后应用程序依旧存活的数据被分配到年老代。
  你的年老代容量要足够大是至关重要的,为了能够轻易容纳你的应用程序存活数据,也为了能够限制应用程序主要垃圾回收的频率,还为了能够减轻对应用程序负载吞吐量的影响。
  建议:刚开始,调整 Java 堆大小,以达到一次完全垃圾回收之后年老代占用或者大约占用 50% 的内存,使得高负载情况(故障转移,高峰,业务繁忙时段)能够提供做够大的缓存。
  要点:注意年老代的内存溢出!
  在 Java 中什么是内存溢出?随着时间的推移存活数据不断增加……
  
  深入存活数据
  JVM 的垃圾回收日志很棒……但是你如何检查你的存活数据呢?
  Java 堆直方图快照和堆转储分析是强大而成熟的方法,能够更好地了解您的应用程序的存活数据。
  Java 剖析解决方案和工具,例如 Oracle Java Mission Control,Java Visual VM 为 Java 堆的检查和分析提供了高级特性,包括应用程序内存分配的跟踪。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号