jvm ide_通过微调JVM Garbage Collector减少Java IDE滞后
jvm ide
有沒有想過為什么Eclipse / Netbeans會一直暫停一段時間? 特別是當(dāng)您想向親愛的同事展示代碼中的內(nèi)容時? 感到尷尬和尷尬,不是嗎?
我發(fā)現(xiàn)大多數(shù)情況下IDE會由于執(zhí)行垃圾收集器而暫停。 JVM設(shè)計中的微妙元素很少起作用,通常可以使我們的開發(fā)人員免于擔(dān)心內(nèi)存消耗,并且大多數(shù)人都高興地知道它可以很好地完成工作,并且在大多數(shù)情況下會忽略它。 但是,如果我們只是忽略它,運(yùn)行垃圾收集器的后果可能會讓我們感到驚訝。
簡而言之,當(dāng)GC運(yùn)行時,它將暫停應(yīng)用程序的執(zhí)行,直到完成釋放內(nèi)存為止。 對于Java絕對不是第一選擇的實(shí)時系統(tǒng),這肯定是不可接受的。 但是,即使在非關(guān)鍵的大型桌面應(yīng)用程序中(現(xiàn)代Java IDE確實(shí)如此),GC也會使整個應(yīng)用程序停止運(yùn)行幾秒鐘。 這可能在一天中發(fā)生幾次。 您可以想象,使用IDE之類的生產(chǎn)力工具,只會降低其“生產(chǎn)力”效果。
一個解決方案是進(jìn)行一些調(diào)整:
- 增加運(yùn)行IDE的JVM的內(nèi)存(請注意,這只會降低調(diào)用GC的頻率,但是會延長單個GC運(yùn)行的執(zhí)行時間–從較大的堆中收集垃圾需要更長的時間…)
- 將默認(rèn)的GC引擎切換為更并發(fā)的引擎,即使在完整GC停止一切執(zhí)行之前,它也會嘗試連續(xù)收集垃圾
第一個選項(xiàng)是大多數(shù)Java程序員所熟知的-只需為MaxPermSize及其系列定義合理的值即可。
但是,第二種選擇不是很為人所知。 關(guān)鍵是Oracle Java Hotspot JVM提供了幾種可供選擇的GC引擎,我們可以從中選擇。 而且,它們與默認(rèn)值不同,即使在大型GC執(zhí)行之間也會提供連續(xù)的垃圾收集,這會減慢一切。
G1垃圾收集器
從Java 7更新4開始,Oracle 在JVM中提供了G1垃圾收集器 。
您可以使用以下命令行參數(shù)簡單地啟用它:
-XX:+UseG1GCG1還有一個有趣的選項(xiàng)來限制GC處理的時間,因此限制了由于GC導(dǎo)致的暫停時間。
-XX:MaxGCPauseMillis=n我建議將其設(shè)置為2000,因?yàn)槭褂肐DE時通常可以接受2秒的暫停。 請注意,這只是G1收集器的一個軟提示-如果GC周期需要更多時間,則不會尊重它,但是在大多數(shù)情況下,G1應(yīng)該尊重它。
有關(guān)如何配置G1的更多信息,請參閱Java Hotspot VM G1選項(xiàng) 。
CMS垃圾收集器
在某些基準(zhǔn)測試中 ,較早的CMS收集器性能優(yōu)于較新的G1收集器。
您可以使用以下選項(xiàng)來啟用它而不是G1:
-XX:+UseConcMarkSweepGC特殊的Eclipse調(diào)整
GC調(diào)整確實(shí)有助于提高Netbeans安裝的性能。 但是,說實(shí)話,在Eclipse IDE中,GC調(diào)整只是優(yōu)化性能的眾多步驟之一,不幸的是,這只是次要的步驟。 有助于做更多事情的是配置方面的調(diào)整,例如關(guān)閉代碼中的某些驗(yàn)證,減小控制臺輸出的大小。 就我而言,控制臺輸出凍結(jié)了Eclipse,以至于我需要將應(yīng)用程序服務(wù)器的標(biāo)準(zhǔn)輸出重定向到文件并完全繞過控制臺:(
翻譯自: https://www.javacodegeeks.com/2016/02/decrease-java-ide-lagging-fine-tuning-jvm-garbage-collector.html
jvm ide
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的jvm ide_通过微调JVM Garbage Collector减少Java IDE滞后的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米note顶配版评测(小米note和小
- 下一篇: java关闭窗口函数_2016年将是Ja