天天看點

Go - 使用 sync.Pool 來減少 GC 壓力

目錄

​<code>​sync.Pool​</code>​ 是臨時對象池,存儲的是臨時對象,不可以用它來存儲 ​<code>​socket​</code>​ 長連接配接和資料庫連接配接池等。

​<code>​sync.Pool​</code>​ 本質是用來儲存和複用臨時對象,以減少記憶體配置設定,降低 GC 壓力,比如需要使用一個對象,就去 Pool 裡面拿,如果拿不到就配置設定一份,這比起不停生成新的對象,用完了再等待 GC 回收要高效的多。

​<code>​sync.Pool​</code>​ 的使用很簡單,看下示例代碼:

當使用 ​<code>​student​</code>​ 對象時,隻需要調用 ​<code>​New()​</code>​ 方法擷取對象,擷取之後使用 ​<code>​defer​</code>​ 函數進行釋放即可。

關于 ​<code>​sync.Pool​</code>​ 裡面的對象具體是什麼時候真正釋放,是由系統決定的。

一定要注意存儲的是臨時對象!

一定要注意 ​<code>​Get​</code>​ 後,要調用 ​<code>​Put​</code>​ !

以上,希望對你能夠有所幫助。