簡體   English   中英

Golang內存分配測試

[英]Golang memory allocation test

我正在嘗試用我的“程序”分配內存-只是分配它並保留在那里-用於測試目的。 當我在MacOS上運行它時,活動監視器顯示它分配了1.6 gb,而當我為Linux編譯它並在那里運行它時,它什么也沒做-它輸出消息,但計算機上沒有使用ram。 我做錯了嗎? 有沒有更好的辦法? 這是我的代碼:

package main


import (
    "fmt"
    "unsafe"
    "time"
)


func main() {
    var buffer [100 * 1024 * 1024]string
    fmt.Printf("The size of the buffer is: %d bytes\n", unsafe.Sizeof(buffer))
    time.Sleep(300 * time.Second)
}

首先,我使用字節作為數組類型,但是在Mac上它無法正常工作嗎?

您的代碼中沒有任何內容需要內存。 編譯器完全有能力優化整個分配,並且即使編譯器不執行該操作,操作系統也不會提交內存-您永遠不會分配任何內容,因此可能只是鏡像零頁。

對於所使用的Linux和所使用的MacOS之間的細微差別,我一無所知,因此可以肯定地說的話。 很有可能是,當您在MacOS上看到所有虛擬內存時,在Linux機器上檢查內存的方式只給了您已提交的內存,或者可能還有其他細微的差別。 無論如何,由於編譯器變得智能,並且我們在PC上擁有虛擬內存,因此獲取任何有意義的基准變得越來越難了–我們使用的工具通常足夠聰明,可以避免不必要的浪費; 而您要嘗試的大多數基准測試幾乎完全是不必要的浪費。

基准測試很難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM