[英]What is the default Full GC interval in Java 8
你這么說
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000
沒有“激活”。 但是,這些是這些屬性的默認值; 即,如果不指定屬性的值,則獲得的值。
參考:Oracle的sun.rmi屬性文檔。
那么Java 8中的默認Full GC間隔是多少?
請參閱上文,了解DCG觸發的完整GC。
除此之外,當請求(通過System.gc()
調用)或JVM確定有必要時,會發生完整的GC。 如果您不使用RMI,則沒有固定的間隔。
......以及如何將其配置為動態?
如果您的意思是,如何阻止RMI每小時觸發一次完整的GC:
一種方法是為這些屬性指定(更多)更大的值。
另一種方法是使用-XX:+DisableExplicitGC
標志啟動JVM。 注意:這將禁用對System.gc()
所有調用,而不僅僅是RMI的DGC調用。 另請參閱: 當NIO直接緩沖區用於可能導致的某些問題時,設置-XX:+ DisableExplicitGC的影響 。
第三種方法是使用-XX:+ExplicitGCInvokesConcurrent
標志。 這減少了對System.gc()
的調用的影響,但它只適用於支持並發收集的GC; 例如CMS,G1, ZGC或Shenandoah 。
您可以調整其他內容以減少並發收集器“停止世界”暫停,但這超出了此問題的范圍。
另一種解決方案是設置選項
-XX:+ExplicitGCInvokesConcurrent
與...結合
-XX:+UseG1GC
這樣,System.gc()不會被禁用,但通過使GC在並發模式下工作而不是導致“停止世界”的情況來減少危害。 我用它來成功地將WildFly中的GC暫停從10秒減少到500毫秒。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.