Java开发人员应了解的JVM流行语
生活随笔
收集整理的這篇文章主要介紹了
Java开发人员应了解的JVM流行语
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本文將與您分享一些JVM“流行語”,它們對于Java開發(fā)人員在執(zhí)行任何JVM性能和垃圾回收調(diào)優(yōu)之前理解和記住非常重要。 本文末尾還提供了一些技巧,包括一些高級性能調(diào)優(yōu)最佳實踐。 將來的文章中將探討有關(guān)Oracle HotSpot并發(fā)GC收集器(例如CMS和G1)的更多建議。
在繼續(xù)閱讀之前,建議您首先熟悉JVM詳細(xì)的GC日志。 掌握此JVM數(shù)據(jù)分析技能至關(guān)重要,尤其是與更高級的APM技術(shù)結(jié)合使用時。
JVM流行語
| 分配率 | 分配給YoungGen空間的Java對象, 亦稱“短暫”對象。 |
| 促銷率 | Java對象從 YoungGen來 OldGen空間。 |
| 實時數(shù)據(jù) | 坐在OldGen空間中的Java對象,也稱為“長壽”對象。 |
| 世界停止收集 | 垃圾收集,例如Full GC,并導(dǎo)致應(yīng)用程序線程暫時掛起,直到完成。 |
首先,JVM GC日志
- 提供有關(guān)Java堆和GC活動的開箱即用的詳細(xì)信息。
- 使用GCMV (GC內(nèi)存可視化工具)之類的工具來評估JVM暫停時間和內(nèi)存分配率,而不是手動確定世代大小。
分配率和促銷率
- 重要的是要跟蹤應(yīng)用程序的分配和提升率,以獲得最佳的GC性能。
- 作為JVM人機工程學(xué)的一部分,保持GCAdaptiveSizePolicy處于活動狀態(tài)。 僅在需要時手動調(diào)音。
實時數(shù)據(jù)計算
- 完整GC后,您的實時應(yīng)用程序數(shù)據(jù)對應(yīng)于OldGen占用率。
- 至關(guān)重要的是,您的OldGen容量必須足夠大,以舒適地保存您的實時數(shù)據(jù),并限制主要收集的頻率以及對應(yīng)用程序負(fù)載吞吐量的影響。
建議:首先,調(diào)整Java Heap的大小,以使OldGen占用空間或Full GC后達(dá)到約50%的占用率,從而為某些較高的負(fù)載情況(故障轉(zhuǎn)移,峰值,繁忙的業(yè)務(wù)時段...)留有足夠的緩沖。
- *熱門* :注意OldGen內(nèi)存泄漏!
- 什么是Java中的內(nèi)存泄漏? 隨著時間的推移,實時數(shù)據(jù)不斷增加 ……
實時數(shù)據(jù)深入研究
- JVM GC日志很棒……但是如何檢查實時數(shù)據(jù)呢?
- Java堆直方圖快照和堆轉(zhuǎn)儲分析是功能強大且行之有效的方法,可以更好地了解您的應(yīng)用程序?qū)崟r數(shù)據(jù)。
- Java事件探查器解決方案和工具(例如Oracle Java Mission Control和Java Visual VM)提供了用于深度Java堆檢查和性能分析的高級功能,包括跟蹤應(yīng)用程序內(nèi)存分配。
世界各地的收藏:GC開銷
- YoungGen收集的價格較低,但要注意分配率過高。
- 建議最初將YoungGen的大小調(diào)整為(JVM默認(rèn))堆大小的1/3。
- 請記住:YoungGen和OldGen集合都是世界停止的事件!
- PermGen和Metaspace(JDK 1.8+)是在Full GC期間收集的,因此,跟蹤Class元數(shù)據(jù)足跡和GC頻率非常重要。
最后的話語和建議
最佳實踐
- 最佳的Java性能不僅僅與Java有關(guān)……探索所有角度。
- 始終依靠事實而非猜測。
- 首先關(guān)注全局調(diào)整項,而過早的細(xì)粒度優(yōu)化則要重點。
- 如果適用,請執(zhí)行性能和負(fù)載測試。
- 充分利用經(jīng)過驗證的工具和故障排除技術(shù)。
避免
- 有許多可能的JVM參數(shù):不要過度調(diào)整JVM!
- 您始終會擔(dān)心自己不了解的內(nèi)容:良好的應(yīng)用程序知識>無懼>更好的調(diào)優(yōu)建議。
- 永遠(yuǎn)不要以為您的應(yīng)用程序性能是最佳的。
- 不要試圖立即解決所有問題,而要逐步進行調(diào)整。
- 不要感到困惑,要專注于性能問題的根本原因而不是癥狀。
- 過度嘗試和錯誤的方法:猜測的癥狀。
翻譯自: https://www.javacodegeeks.com/2015/07/jvm-buzzwords-java-developers-should-understand.html
總結(jié)
以上是生活随笔為你收集整理的Java开发人员应了解的JVM流行语的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荷兰公司 PAL-V 在德国开设飞行汽车
- 下一篇: 在Java SE中使用Hibernate