[英]Is it possible to change the priority of garbage Collector thread?
Java垃圾收集器以優先級1運行,因此,不能保證System.gc()如果被調用將實際執行。
有什么辦法可以改變其優先級? 如果需要,這將使我能夠運行。
垃圾收集器是一個獨立線程(如Tom Hawtin在評論中所提醒,甚至不一定是單個線程),並且其優先級由Java虛擬機確定。 這意味着您不能強制垃圾回收。 調用System.gc()
告訴運行時環境“現在”可能是運行GC的好時機,但實際上並不能保證立即進行垃圾回收。
即使將線程優先級提高到11, System.gc也無法保證任何保證。 您可以肯定的是,如果Java需要進行GC處理,它將在拋出內存不足異常之前將其清除。
GC將根據需要運行。 您不需要手動調用它。 如果您不喜歡它的運行時間,則可以使用命令行參數對其進行控制。
如果您認為GC的行為存在問題,則應嘗試解決問題的原因,而不是嘗試編寫自己的解決方法。
總之,您應該告訴我們引起您關注的真正原因是什么,以便我們解決。
創建線程時,它將繼承創建線程的優先級。 可以通過使用來調整線程的優先級
public final void setPriority(int newPriority)
問題是線程無法“運行”垃圾收集器。 垃圾收集器由VM運行(當Java需要或處於“良好狀態.. :)”時)。
編輯:GC不是線程,而是運行時線程的方法。 您可以更改運行時線程的優先級,但這不會對GC產生影響。 調用GC的線程是VM的線程,並且不在API范圍之內,因此您不能更改其優先級。
因此,我真的不認為您可以設置其優先級。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.