歡迎來到培訓無憂網(wǎng)!

全國切換

咨詢熱線 400-001-5729

位置:培訓無憂網(wǎng) > 新聞資訊 > 電腦/IT > java培訓 >  Java培訓:編寫GC高效代碼3個技巧

Java培訓:編寫GC高效代碼3個技巧

來源:m.elsolbar.com 發(fā)布人:星星

2021-12-10 14:00:41|已瀏覽:331次

       應(yīng)用程序性能直接受到垃圾收集(GC)的頻率和持續(xù)時間的影響,如果在GC策略調(diào)優(yōu)到達瓶頸后,性能的差別就會產(chǎn)生在代碼的編寫質(zhì)量了。下面就來說說GC友好代碼的幾個技巧。對GC感興趣的同學可以參加java培訓,可以獲得快速有效的學習。
技巧1:預(yù)測收集容量
       所有標準Java集合,以及大多數(shù)自定義和擴展實現(xiàn)(如Trove和Google的Guava)都使用底層數(shù)組(基于原語或基于對象)。由于數(shù)組在分配后大小是不可變的,因此在許多情況下,向集合中添加項可能會導致刪除舊的底層數(shù)組,而選擇新分配的較大數(shù)組。大多數(shù)集合實現(xiàn)都試圖優(yōu)化此重新分配過程,并將其保持在攤銷最小值,即使未提供集合的預(yù)期大小。但是,通過在構(gòu)建時為集合提供其預(yù)期大小,可以實現(xiàn)最佳效果。
技巧2:直接處理流程

       在處理數(shù)據(jù)流時,例如從文件讀取的數(shù)據(jù)或通過網(wǎng)絡(luò)下載的數(shù)據(jù),通常會看到以下內(nèi)容:

       Java培訓:編寫GC高效代碼3個技巧

       然后,可以將生成的字節(jié)數(shù)組解析為XML文檔、JSON對象或協(xié)議緩沖區(qū)消息,以列舉一些流行選項。
       在處理大型文件或大小不可預(yù)測的文件時,這顯然是一個壞主意,因為如果JVM無法實際分配整個文件大小的緩沖區(qū),它會使我們暴露出OutOfMemory錯誤。在java培訓中,有很多關(guān)于GC的培訓課程,在專業(yè)老師的教學指導下,可以很全面地掌握GC的相關(guān)知識和技能。
       更好的方法是使用適當?shù)腎nputStream(本例中為FileInputStream)并將其直接提供給解析器,而無需首先將整個內(nèi)容讀入字節(jié)數(shù)組。所有主要庫都公開API以直接解析流,例如:
       Java培訓:編寫GC高效代碼3個技巧
技巧3:使用不可變對象
      不變性有許多優(yōu)點。它對垃圾收集的影響很少得到應(yīng)有的關(guān)注。不可變對象是一個對象,其字段(在本例中特別是非基本字段)在對象構(gòu)造后無法修改。

      不變性意味著不可變?nèi)萜饕玫乃袑ο蠖际窃谌萜鳂?gòu)造完成之前創(chuàng)建的。在GC術(shù)語中:容器至少和它所持有的最年輕引用一樣年輕。這意味著,當對年輕代執(zhí)行垃圾收集循環(huán)時,GC可以跳過位于較老代中的不可變對象,因為它確定這些對象不能引用正在收集的代中的任何對象。要掃描的對象越少意味著要掃描的內(nèi)存頁越少,而要掃描的內(nèi)存頁越少意味著GC周期越短,這意味著GC暫停時間越短,總體吞吐量越好。想學習java技術(shù)的同學,不妨報個Java培訓班,有明確清晰的學習路線,理論知識+實戰(zhàn)操作,可以獲得快速提升。

      本文由培訓無憂網(wǎng)牛耳教育專屬課程顧問整理發(fā)布,更多Java培訓課程資訊歡迎關(guān)注培訓無憂網(wǎng)Java培訓頻道或添加老師微信:1503333605010

      注:尊重原創(chuàng)文章,轉(zhuǎn)載請注明出處和鏈接 http://m.elsolbar.com/news-id-7061.html 違者必究!部分文章來源于網(wǎng)絡(luò)由培訓無憂網(wǎng)編輯部人員整理發(fā)布,內(nèi)容真實性請自行核實或聯(lián)系我們,了解更多相關(guān)資訊請關(guān)注java培訓頻道查看更多,了解相關(guān)專業(yè)課程信息您可在線咨詢也可免費申請試課。關(guān)注官方微信了解更多:150 3333 6050

留下你的信息,課程顧問老師會一對一幫助你規(guī)劃更適合你的專業(yè)課程!
  • 姓名:

  • 手機:

  • 地區(qū):

  • 想學什么:

  • 培訓無憂網(wǎng)
免 費 申 請 試 聽
提交申請,《培訓無憂網(wǎng)》課程顧問老師會一對一幫助你規(guī)劃更適合你的專業(yè)課程!