簡體   English   中英

是否可以更改垃圾收集器線程的優先級?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM