我試圖在我的代碼上運行IntelliJ中提供的代碼檢查,並在調用new Boolean("true")
時報告了性能問題。
在IDE中的描述給出布爾構造函數如何導致性能問題?
報告任何企圖實例化一個新的Boolean對象。構建 很少需要新的布爾對象,並且如果經常執行,可能會導致性能問題。
想了解該聲明如何或爲什麼會導致性能問題?
我試圖在我的代碼上運行IntelliJ中提供的代碼檢查,並在調用new Boolean("true")
時報告了性能問題。
在IDE中的描述給出布爾構造函數如何導致性能問題?
報告任何企圖實例化一個新的Boolean對象。構建 很少需要新的布爾對象,並且如果經常執行,可能會導致性能問題。
想了解該聲明如何或爲什麼會導致性能問題?
如果您撥打new Boolean("true")
一百萬次,則會創建百萬Boolean
個對象。相反,你可以使用Boolean.valueOf("true")
這將重用相同的Boolean
對象(或者只是使用原始值true
,讓編譯器爲你處理拳擊)。
那麼,這只是創建對象的開銷嗎?沒有其他具體原因導致性能下降,我猜... –
@GS創建許多不必要的對象可能會導致性能下降(包括它們佔用的內存,多次執行布爾構造函數所需的時間,以及垃圾收集器的額外工作,釋放所有這些對象)。 – Eran
那麼,爲什麼你特別需要一個新的實例?它可以從字面上只採取兩個值,所以在多個實例中有什麼意義。你只是分配更多的對象。 –
參考http://www.programmr.com/blogs/two-things-every-java-developer-should-know-about-booleans –
@JeroenVannevel,好吧,我可以改變它爲原始數據類型,但熱衷於理解爲什麼或如何能達到性能 –