精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go 1.24 中的弱指針包 weak 使用

開發 后端
簡而言之,弱指針不會增加對象的引用計數。當一個對象只被弱指針引用時,垃圾回收器就可以釋放它。因此,在嘗試使用弱指針的值之前,應檢查它是否為 nil。

在 Go 語言中,“弱指針”指的是不會阻止垃圾回收器(GC)回收目標對象的引用。

當一個對象只剩弱指針指向它,而沒有任何強引用時,GC 仍會把該對象當作不可達對象并回收;隨后,所有指向它的弱指針會自動變為 nil。

簡而言之,弱指針不會增加對象的引用計數。當一個對象只被弱指針引用時,垃圾回收器就可以釋放它。因此,在嘗試使用弱指針的值之前,應檢查它是否為 nil。

Go 1.24 中的 weak 包

Go 1.24 新增 weak 包,提供了創建和使用弱指針的簡潔 API。

import "weak"

type MyStruct struct {
    Data string
}

func main() {
    obj := &MyStruct{Data: "example"}
    wp := weak.Make(obj) // 創建弱指針
    val := wp.Value()    // 獲取強引用或 nil
    if val != nil {
        fmt.Println(val.Data)
    } else {
        fmt.Println("對象已被垃圾回收")
    }
}

在以上示例中,weak.Make(obj) 創建了指向 obj 的弱指針。調用 wp.Value() 時,如果對象仍存活則返回強引用,否則返回 nil。

測試弱指針:

import (
    "fmt"
    "runtime"
    "weak"
)

type MyStruct struct {
    Data string
}

func main() {
    obj := &MyStruct{Data: "test"}
    wp := weak.Make(obj)
    obj = nil // 移除強引用
    runtime.GC()
    if wp.Value() == nil {
        fmt.Println("對象已被垃圾回收")
    } else {
        fmt.Println("對象仍然存活")
    }
}

通過將強引用 obj 置為 nil 并主動觸發 GC,可觀察到弱指針在對象被回收后返回 nil 的行為。

弱指針”與“強引用”的區別

特性

強引用 (*T)

弱引用 (weak.Pointer[T])

影響 GC

會保持對象存活

不會保持對象存活

空值

nil

nil

(目標被回收或從未賦值)

訪問方式

直接解引用

先調用 Value()

示例 1: 弱指針做臨時緩存

使用弱指針的一個典型場景是在緩存中存儲條目,同時不阻止它們被 GC 回收。

package main

import (
    "fmt"
    "runtime"
    "sync"
    "weak"
)

type User struct {
    Name string
}

var cache sync.Map // map[int]weak.Pointer[*User]

func GetUser(id int) *User {
    // ① 先從緩存里取
    if wp, ok := cache.Load(id); ok {
        if u := wp.(weak.Pointer[User]).Value(); u != nil {
            fmt.Println("cache hit")
            return u
        }
    }

    // ② 真正加載(這里直接構造)
    u := &User{Name: fmt.Sprintf("user-%d", id)}
    cache.Store(id, weak.Make(u))
    fmt.Println("load from DB")
    return u
}

func main() {
    u := GetUser(1) // load from DB
    fmt.Println(u.Name)

    runtime.GC() // 即使立刻 GC,因 main 持有強引用,User 仍在

    u = nil      // 釋放最后一個強引用
    runtime.GC() // 觸發 GC,User 可能被回收

    _ = GetUser(1) // 如被回收,會再次 load from DB
}

在該緩存實現中,條目以弱指針形式存儲。如果對象沒有其他強引用,GC 可以將其回收;下次調用 GetUser 時,數據會被重新加載。

運行上述代碼,輸出如下:

$ go run cache.go 
load from DB
user-1
load from DB

為什么要使用弱指針?

常見場景包括:

  • 緩存:在不強制對象常駐內存的前提下存儲它們,如果其他地方不再使用,對象就能被回收;
  • 觀察者模式:保存對觀察者的引用,同時不阻止它們被 GC 回收;
  • 規范化(Canonicalization):確保同一對象只有一個實例,并且在不再使用時可被回收;
  • 依賴關系圖:在樹或圖等結構中避免形成引用環。

弱指針使用注意事項

  • 隨時檢查 nil:對象可能在任意 GC 周期后被回收,Value() 結果不可緩存。
  • 避免循環依賴:不要讓弱指針中的對象重新持有創建它的容器,否則仍會形成強引用鏈。
  • 性能權衡:訪問弱指針需要額外調用,且頻繁從 nil 狀態恢復對象會導致抖動。

示例 2:強指針的普通使用

package main  

import (  
 "fmt"  
 "runtime"  
)  

type Session struct {  
 ID string  
}  

func main() {  
 s := new(Session) // 與 &Session{} 等價  
 s.ID = "abc123"  

 fmt.Println("strong ref alive:", s.ID)  

 s = nil           // 取消最后一個強引用  
 runtime.GC()      // 嘗試觸發 GC(僅演示,實際時機由運行時決定)  

 fmt.Println("done")  
}

這里的 s 就是強指針,只要它仍然可達,Session 對象就絕不會被 GC 回收。

強指針指向的對象何時被 GC?

(1) 可達性判定:Go 使用標記-清除式 GC。一次 GC 周期開始時,運行時會從根對象(棧、全局變量、當前寄存器等)向外遍歷所有強引用。

  • 能通過強引用鏈到達的對象稱為可達 (reachable),一定存活;
  • 其余對象被標記為不可達 (unreachable),在清掃階段釋放。

(2) 不存在“引用計數”:只有“是否從根可達”這一條件;變量數目多少、值是否相等都不影響回收;

(3) 時間點不確定:GC 周期由調度器自動觸發,開發者只能調用 runtime.GC() 進行“建議”式觸發,不能保證立即回收;

(4) 變量本身也會被 GC:若強指針變量 s 位于堆上且其所在結構不再可達,那么 s 本身也會被 GC;棧變量則隨函數返回被回收。

總結一句:強指針保證可達對象在任意 GC 周期都處于“存活集合”中;一旦最后的強引用鏈斷開,對象就會在下一個 GC 周期被自動釋放。

責任編輯:趙寧寧 來源: 孔令飛
相關推薦

2024-10-09 08:54:31

2025-07-29 10:00:00

指針開發Go

2025-09-16 08:49:13

2023-10-26 11:19:21

指針Go

2025-05-06 08:00:35

2015-07-08 16:28:23

weak生命周期

2015-03-16 10:33:14

Swift指針

2015-01-21 16:25:29

Swift指針

2024-09-03 08:49:01

2025-05-07 08:55:14

GoMap存儲

2021-09-27 22:49:13

GoC 指針

2021-04-13 07:58:42

Go語言函數

2025-03-07 09:12:28

2021-10-26 13:18:52

Go底層函數

2022-01-10 13:01:32

指針Struct內存

2025-01-06 09:18:04

2022-08-08 08:31:55

Go 語言閉包匿名函數

2022-08-08 06:50:06

Go語言閉包

2025-05-26 08:15:00

Go開發指針

2025-05-26 10:10:00

Go開發testing
點贊
收藏

51CTO技術棧公眾號

国产成人a亚洲精v品无码| 97在线免费视频| 在线观看av网页| 9色在线观看| 国产乱码精品一区二区三区av | 国产91九色视频| 欧美福利在线视频| 高清欧美性猛交xxxx黑人猛| 欧美日韩在线另类| 色综合666| 国产一区二区在线观看免费播放| 亚洲精品永久视频| gogogogo高清视频在线| 成人国产精品免费| 国产精品亚洲自拍| 日本三级免费看| 日本道不卡免费一区| 欧美成人精品高清在线播放 | 视频一区二区国产| 欧美精品在线极品| 丰满少妇一区二区| 久久wwww| 欧美日韩一区二区三区高清 | 欧美一区二区三区四区五区| 黑人糟蹋人妻hd中文字幕| 18av在线播放| 欧美激情一区二区三区四区| 成人女人免费毛片| 一级久久久久久久| 亚洲一区区二区| 欧美激情在线播放| 老熟妇高潮一区二区三区| 蜜桃一区二区| 亚洲精品动漫100p| 又大又长粗又爽又黄少妇视频| 天然素人一区二区视频| 欧美日韩精品在线| 成年人网站国产| 成人在线观看免费网站| 国产精品乱子久久久久| 久久综合毛片| 污污网站在线免费观看| 国产一区二区三区蝌蚪| 国产精品黄页免费高清在线观看| 五月婷婷激情网| 一本一本久久a久久综合精品| 一区二区欧美久久| 少妇特黄一区二区三区| 精品精品国产毛片在线看| 欧美一区二区女人| 亚洲高清视频免费| 99er精品视频| 欧美年轻男男videosbes| 九九热在线免费| 欧美日韩免费观看视频| 日韩欧美福利视频| 欧美性久久久久| 天堂av中文在线观看| 精品福利在线观看| 久久成人免费观看| 在线手机中文字幕| 色综合咪咪久久| 虎白女粉嫩尤物福利视频| 九九精品调教| 亚洲成av人片在线| 国产自产在线视频| 免费一二一二在线视频| 丰满岳妇乱一区二区三区| 欧美黄色免费影院| 91精品论坛| 欧美中文一区二区三区| 久热在线视频观看| 欧一区二区三区| 精品国产伦一区二区三区观看方式 | 国产综合欧美在线看| 天天躁日日躁狠狠躁喷水| 99re热这里只有精品视频| 蜜桃传媒视频麻豆第一区免费观看| 欧洲毛片在线| 国产精品免费aⅴ片在线观看| 亚洲国产精品日韩| 黄色片网站在线| 亚洲午夜激情网页| 国产真实乱子伦| 农村妇女一区二区| 日韩一区二区三区电影在线观看| 中文字幕乱视频| 欧美猛男做受videos| 中文字幕最新精品| 免费视频网站www| 奶水喷射视频一区| 亚洲精品免费在线视频| 天天干天天做天天操| 97久久夜色精品国产| 高清不卡一区二区| 国产丝袜不卡| chinese偷拍一区二区三区| 亚洲婷婷在线视频| 国产精品又粗又长| 国产69精品久久| 日韩欧美视频一区| 国产熟妇搡bbbb搡bbbb| 在线成人直播| 青青青国产精品一区二区| 国产又粗又猛又黄又爽无遮挡| 不卡av在线网| 永久免费精品视频网站| 男女羞羞在线观看| 欧美一区二区三区免费观看视频 | 欧美成人h版在线观看| 亚洲 欧美 视频| 国内精品不卡在线| 欧美日韩一区二区三区免费| 在线观看wwwxxxx| 91成人免费网站| 99热超碰在线| 忘忧草精品久久久久久久高清| 91国语精品自产拍在线观看性色 | a成人v在线| 欧美一区二区福利视频| 自拍偷拍中文字幕| 伊人激情综合| 成人精品久久久| 精品视频二区| 五月天国产精品| 日本r级电影在线观看| 国产精品免费大片| 欧美极品欧美精品欧美视频| 一区二区的视频| 久久久精品免费观看| 久久这里只有精品8| 四虎国产精品免费久久| 亚洲欧洲国产伦综合| 久久久久久欧美精品se一二三四| 乱一区二区av| 日本不卡一区二区三区在线观看| 黄色18在线观看| 精品国产一区久久| 国产色无码精品视频国产| 蜜桃久久av一区| 亚洲第一综合| 素人啪啪色综合| 亚洲人成电影在线| 特级毛片www| 26uuu久久天堂性欧美| 中文字幕亚洲综合久久筱田步美| 在线免费看v片| 国内精品视频在线观看| 91av在线国产| 偷拍自拍在线| 亚洲高清不卡在线观看| 亚洲欧美激情一区二区三区| 91tv精品福利国产在线观看| 91久久久久久久| 日本福利在线| 精品视频在线视频| 你懂得视频在线观看| 日韩av在线发布| 水蜜桃一区二区| 国产精品99久久久久久董美香| 亚洲最大在线视频| 欧美日韩在线视频播放| 国产欧美精品国产国产专区 | 美女精品在线| 欧美福利精品| 91国拍精品国产粉嫩亚洲一区 | 国产精品69xx| 亚洲国产精品嫩草影院久久| 五月婷婷亚洲综合| 久久久久久毛片| 亚洲 激情 在线| 亚洲一区欧美| 高清国产一区| 欧美香蕉视频| 色偷偷av亚洲男人的天堂| 国产精品久久久久久久久免费相片| 国产成人亚洲综合无码| 亚洲精品一区二区三区中文字幕| 欧美激情亚洲精品| 亚洲欧美自偷自拍| 在线观看亚洲成人| 亚洲不卡在线播放| 成人免费观看男女羞羞视频| 人妻有码中文字幕| 全球成人免费直播| 91pron在线| ****av在线网毛片| 日韩精品福利网站| 一道本在线视频| 亚洲综合免费观看高清完整版在线| 少妇激情一区二区三区视频| 日韩电影一区二区三区| 福利在线小视频| 久久93精品国产91久久综合| 91中文字幕在线| 日韩激情电影| 久久精品99无色码中文字幕| 日本精品一区二区在线观看| 欧美优质美女网站| 日韩精品一区二区在线播放 | 殴美一级黄色片| 东方aⅴ免费观看久久av| www.欧美日本| 黄色免费成人| 亚洲国产一区二区精品视频| 亚洲精品卡一卡二| 日本中文字幕一区二区有限公司| 伊人久久99| 欧美一区二区三区久久| 精品久久久久久久久久国产| 欧美日韩精品免费看| 91麻豆精品国产综合久久久| 91高清在线免费观看| 视频免费一区| 亚洲精品小视频| 午夜精品久久久久久久99 | www.18av.com| 欧洲杯半决赛直播| 免费黄色在线看| 婷婷久久综合九色国产成人| 国产精品18在线| 91丝袜高跟美女视频| 国产女同无遮挡互慰高潮91| 久久久天天操| 男人添女荫道口喷水视频| 色呦哟—国产精品| 欧美三日本三级少妇三99| 综合视频一区| 91在线视频成人| 成人在线视频免费看| 777午夜精品福利在线观看| 99在线播放| 久久精品国产91精品亚洲| 成人亚洲性情网站www在线观看| 亚洲激情电影中文字幕| 动漫av一区二区三区| 91精品福利在线一区二区三区 | 欧美日韩电影在线| 波多野结衣高清在线| 欧美视频不卡中文| 日本三级一区二区| 亚洲v精品v日韩v欧美v专区| 欧美精品入口蜜桃| 日韩美女精品在线| 99国产精品无码| 国产精品理论片| 欧美成人另类视频| 日本一区二区三级电影在线观看| 久久久久久久久免费看无码| av网站免费线看精品| 好吊操视频这里只有精品| 国产伦精品一区二区三区免费迷| 亚洲精品免费一区亚洲精品免费精品一区 | 欧美激情精品| 91热精品视频| 亚洲成人偷拍| 国产精品初高中精品久久| 91精品日本| 国产在线精品日韩| 久久人人爽人人爽人人片av不| 国产一区二区精品免费| 日韩av系列| 日本三级中国三级99人妇网站| 国产日产精品_国产精品毛片| 日本一区二区三区视频在线观看 | 日韩精品一页| 亚洲xxx自由成熟| 果冻天美麻豆一区二区国产| 国产日韩久久| 国产成人精品三级高清久久91| 亚洲二区自拍| 欧美特黄一区| 黄色免费视频大全| 日本成人超碰在线观看| 中文字幕12页| 不卡av电影在线播放| 亚洲最大成人网站| 国产精品盗摄一区二区三区| 精品国产乱码久久久久久鸭王1| 亚洲一区二区三区爽爽爽爽爽 | 九九九九精品九九九九| 国产欧美久久一区二区三区| 亚洲一区3d动漫同人无遮挡 | 国产成人涩涩涩视频在线观看| 超碰这里只有精品| 99re视频在线观看| 首页亚洲中字| 人人妻人人澡人人爽精品欧美一区| 亚洲欧美亚洲| 毛片av免费在线观看| 精品写真视频在线观看| 国产成人精品无码片区在线| 亚洲国产精品成人综合色在线婷婷| 欧洲第一无人区观看| 欧美日韩国产中文精品字幕自在自线| 最好看的日本字幕mv视频大全| 欧美一级在线观看| 九色视频在线观看免费播放| 欧美成人精品在线观看| 亚洲成人av观看| 国产精品裸体一区二区三区| 成人羞羞网站入口| 国产 日韩 欧美在线| 麻豆视频观看网址久久| 黄色网址在线视频| 亚洲四区在线观看| 欧美亚洲精品天堂| 日韩欧美的一区二区| 国产中文字幕在线视频| 久久久久久久久久久久av| 成人交换视频| 精品一区二区日本| 中文在线日韩| 视色视频在线观看| 97久久久精品综合88久久| 黑鬼狂亚洲人videos| 在线观看日韩国产| 少妇av一区二区| 美女av一区二区| 国产成人精品一区二区三区视频| 好看的日韩精品视频在线| 亚洲网色网站| 亚洲综合婷婷久久| 久久精品男人的天堂| 国产无遮挡aaa片爽爽| 91精品在线一区二区| 色综合成人av| 97视频人免费观看| 99久久香蕉| 久久久久久久久网| 激情另类小说区图片区视频区| 欧美多人猛交狂配| 懂色aⅴ精品一区二区三区蜜月| 亚洲h视频在线观看| 久久国产加勒比精品无码| 久久亚洲精品中文字幕| 色女孩综合网| 日本女人一区二区三区| 欧美做受xxxxxⅹ性视频| 精品日韩视频在线观看| 色窝窝无码一区二区三区成人网站| 欧美日韩成人网| 亚洲精品在线播放| 国产青草视频在线观看| 国产麻豆91精品| 免费在线看黄网址| 精品精品国产高清a毛片牛牛 | 欧美1区2区| 韩国一区二区三区四区| 樱桃视频在线观看一区| www.五月婷婷| 欧美精品videossex性护士| av在线亚洲色图| 欧美一级视频免费看| 成人亚洲一区二区一| 伊人365影院| 精品偷拍一区二区三区在线看| 在线视频超级| 亚洲欧美久久久久一区二区三区| 美女视频黄 久久| 极品美妇后花庭翘臀娇吟小说| 91麻豆精品国产无毒不卡在线观看| 麻豆tv入口在线看| 亚洲影院高清在线| 欧美日韩国产综合网| 精品一区二区视频在线观看| 欧美午夜美女看片| 在线中文资源天堂| 91在线高清免费观看| 激情婷婷久久| 精品成人av一区二区三区| 欧美日韩视频第一区| www在线视频| 精品伦精品一区二区三区视频| 久久精品成人| 日韩在线视频网址| 精品国产成人在线影院| 成人做爰视频www网站小优视频| 亚洲一区二区在线观| 国产精品亚洲视频| 精品一区免费观看| 在线亚洲欧美视频| 日韩中文字幕在线一区| 玩弄中年熟妇正在播放| 国产欧美精品国产国产专区| 国产精品久久久久久久久毛片 | 99精品国产一区二区三区2021| 大陆极品少妇内射aaaaa| 中文字幕制服丝袜一区二区三区| www国产一区| 国产精品r级在线| 午夜性色一区二区三区免费视频| 国产精品探花一区二区在线观看| 欧美午夜精品电影| ririsao久久精品一区| 日本精品一区二区三区视频 | 五月花成人网| 日本午夜精品电影| 成人综合婷婷国产精品久久 | 亚洲美女av在线播放|