吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

轉載 golang內存分配

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-09-05 14:12 ? 次閱讀

Go 的分配采用了類似 tcmalloc 的結構.特點: 使用一小塊一小塊的連續內存頁, 進行分配某個范圍大小的內存需求. 比如某個連續 8KB 專門用于分配 17-24 字節,以此減少內存碎片. 線程擁有一定的 cache, 可用于無鎖分配.

同時 Go 對于 GC 后回收的內存頁, 并不是馬上歸還給操作系統, 而是會延遲歸還, 用于滿足未來的內存需求.

wKgZombZS7KAXTU0AAWdjb5KQUo739.png

??

在 1.10 以前 go 的堆地址空間是線性連續擴展的, 比如在 1.10(linux amd64)中, 最大可擴展到 512GB. 因為 go 在 gc 的時候會根據拿到的指針地址來判斷是否位于 go 的 heap 的, 以及找到其對應的 span, 其判斷機制需要 gc heap 是連續的. 但是連續擴展有個問題, cgo 中的代碼(尤其是 32 位系統上)可能會占用未來會用于 go heap 的內存. 這樣在擴展 go heap 時, mmap 出現不連續的地址, 導致運行時 throw.

在 1.11 中, 改用了稀疏索引的方式來管理整體的內存. 可以超過 512G 內存, 也可以允許內存空間擴展時不連續.在全局的 mheap struct 中有個 arenas 二階數組, 在 linux amd64 上,一階只有一個 slot, 二階有 4M 個 slot, 每個 slot 指向一個 heapArena 結構, 每個 heapArena 結構可以管理 64M 內存, 所以在新的版本中, go 可以管理 4M*64M=256TB 內存, 即目前 64 位機器中 48bit 的尋址總線全部 256TB 內存.

wKgZombZS7KAUIgMAAlqCZKg9HA790.png

??

go 的內存分配類似于 tcmalloc, 采用了 span 機制來減少內存碎片. 每個 span 管理 8KB 整數倍的內存, 用于分配一定范圍的內存需求.

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3055

    瀏覽量

    74331
  • Go
    Go
    +關注

    關注

    0

    文章

    43

    瀏覽量

    12270
收藏 人收藏

    評論

    相關推薦

    hyper v 內存,hyper v 內存設置的操作步驟和方法是什么?

    在利用Hyper-V搭建和管理虛擬機的過程中,合理設置虛擬機的內存至關重要。內存分配是否恰當,會直接影響到虛擬機的運行性能和穩定性。若內存分配
    的頭像 發表于 01-24 15:22 ?132次閱讀
    hyper v <b class='flag-5'>內存</b>,hyper v <b class='flag-5'>內存</b>設置的操作步驟和方法是什么?

    Golang配置代理方法

    由于一些客觀原因的存在,我們開發 Golang 項目的過程總會碰到無法下載某些依賴包的問題。這不是一個小問題,因為你的工作會被打斷,即便你使用各種神通解決了問題,很可能這時你的線程已經切換到其他的事情上了(痛恨思路被打斷!)。所以最好是一開始我們就重視這個問題,并一勞永逸的解決它。
    的頭像 發表于 11-11 11:17 ?401次閱讀
    <b class='flag-5'>Golang</b>配置代理方法

    內存管理的硬件結構

    常見的內存分配函數有malloc,mmap等,但大家有沒有想過,這些函數在內核中是怎么實現的?換句話說,Linux內核的內存管理是怎么實現的?
    的頭像 發表于 09-04 14:28 ?396次閱讀
    <b class='flag-5'>內存</b>管理的硬件結構

    如何自定義內存控制器的設置

    在FreeRTOS中自定義內存控制器的設置,主要涉及到內存分配策略的選擇和配置。FreeRTOS提供了多種內存分配策略,如heap_1、he
    的頭像 發表于 09-02 14:28 ?575次閱讀

    堆棧和內存的基本知識

    本文主要聊聊關于堆棧的內容。包括堆棧和內存的基本知識。常見和堆棧相關的 bug,如棧溢出,內存泄漏,堆內存分配失敗等。后面介紹軟件中堆棧統計的重要性,以及如何使用工具工具軟件中堆棧使用
    的頭像 發表于 08-29 14:10 ?574次閱讀
    堆棧和<b class='flag-5'>內存</b>的基本知識

    可以用os_malloc() 分配多少內存?有哪些限制?

    我可以用 os_malloc() 分配多少內存?有哪些限制?
    發表于 07-15 06:32

    esp8266如何正確釋放分配內存

    我為結構數組分配內存,這是我的代碼: size_t taskAmount; object *tasks = Parsejson(subbuff,sizeof(subbuff),&
    發表于 07-12 12:34

    ESP32S3+LVGL創建一個界面,請問能只在SPIRAM分配內存,IRAM不分配嗎?

    各位前輩好。ESP32S3+LVGL的開發的過程中發現,創建一個界面,會同時在SPIRAM和IRAM分配相同大小的內存。請問能只在SPIRAM分配內存,IRAM不
    發表于 06-06 07:45

    FreeRTOS如何在中斷中調用內存分配函數?

    最近在玩FreeRTOS,遇到一個問題,就是不知如何在中斷中調用內存分配函數。pvPortMalloc函數中會調用xTaskResumeAll,而這個函數不能再中斷調用,所以請問在中斷中進行內存
    發表于 05-08 08:25

    使用STVD建一個STM8的工程,.h文件在哪里添加?內存分配函數是哪個?

    使用STVD建一個STM8的工程,.h文件在哪里添加?內存分配函數是哪個?芯片是怎樣啟動的?Source Files 下面的mapping.asmand main.asm 是做什么用的文件?
    發表于 04-28 09:05

    freertos任務創建,每一個任務分配內存是多大才好,怎么計算呢?

    小白剛剛接觸freertos,想問一下就創建任務而言,每一個任務分配內存是多大才好,怎么計算呢? 另外,每個任務的執行周期怎么確定?在任務里面放延時函數嗎?
    發表于 04-23 06:39

    Golang為何舍棄三元運算符

    golang中不存在?:運算符的原因是因為語言設計者已經預見到三元運算符經常被用來構建一些極其復雜的表達式。雖然使用if進行替代會讓代碼顯得更長,但這毫無疑問可讀性更強。
    的頭像 發表于 04-03 15:13 ?760次閱讀

    C語言內存泄漏問題原理

    內存泄漏問題只有在使用堆內存的時候才會出現,棧內存不存在內存泄漏問題,因為棧內存會自動分配和釋放
    發表于 03-19 11:38 ?574次閱讀
    C語言<b class='flag-5'>內存</b>泄漏問題原理

    Linux內核內存管理之內核非連續物理內存分配

    我們已經知道,最好將虛擬地址映射到連續頁幀,從而更好地利用緩存并實現更低的平均內存訪問時間。然而,如果對內存區域的請求并不頻繁,那么考慮基于通過連續線性地址訪問非連續頁幀的分配方案是有意義的。該模式
    的頭像 發表于 02-23 09:44 ?1079次閱讀
    Linux內核<b class='flag-5'>內存</b>管理之內核非連續物理<b class='flag-5'>內存</b><b class='flag-5'>分配</b>

    Linux內核內存管理之ZONE內存分配

    內核中使用ZONE分配器滿足內存分配請求。該分配器必須具有足夠的空閑頁幀,以便滿足各種內存大小請求。
    的頭像 發表于 02-21 09:29 ?950次閱讀
    韩城市| 百家乐官网包赢| 百家乐分析| 申博太阳城官方网站| 百家乐网络真人斗地主| 百家乐现金平台排名| 8运24山风水图解| 南京百家乐官网的玩法技巧和规则 | 万达百家乐娱乐城| 网络百家乐的玩法技巧和规则 | 粤港澳百家乐官网娱乐网| 百家乐官网秘诀| 百家乐官网游戏资料网| 网上百家乐官网能作弊吗| 百家乐官网洗码软件| 张掖市| 和田市| 皇冠网怎么注册| 鸿盛博娱乐| 皇家金堡娱乐城| bet365官方网站| 澳门葡京赌场美女| G3娱乐城| 真钱游戏网| 日博| BET365官方网| 娱乐城注册送彩金| tt娱乐城开户| 银都娱乐| 呈贡县| 百家乐官网de概率| 百家乐官网金海岸娱乐| 来博百家乐官网现金网| e世博百家乐官网技巧| 真人百家乐官网网西陆| 百家乐官网游戏机博彩正网| 百家乐官网那个平台信誉高| 百家乐官网翻天粤语快播| 澳门百家乐官网网址多少| 百家乐官网单跳| 百家乐官网透明出千牌靴|