我正在嘗試使用我的“程序”分配內存 - 只是為了分配它并留在那里 - 用于測試目的。當我在我的 MacOS 上運行它時,活動監視器顯示它分配了 1.6 GB,當我為 linux 編譯它并在那里運行它時,它什么也不做——它打印了消息,但機器上沒有使用 ram。我做錯了嗎?有沒有更好的辦法?這是我的代碼:package mainimport ( "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 上沒有工作?
1 回答

飲歌長嘯
TA貢獻1951條經驗 獲得超3個贊
您的代碼中沒有任何內容需要內存。編譯器完全有權利優化整個分配,即使編譯器不這樣做,操作系統也不會提交內存-您永遠不會分配任何內容,因此它可能只是鏡像零頁。
我對您使用的任何 Linux 與您使用的 MacOS 之間的細微差別一無所知,因此幾乎無法確定。很可能您檢查 linux 機器上的內存的方式只給您提交的內存,而您看到的是 MacOS 上的所有虛擬內存,或者可能存在其他細微的差異。無論如何,由于編譯器變得智能并且我們在 PC 上擁有虛擬內存,因此獲得任何有意義的基準變得越來越難——我們使用的工具通常足夠智能,可以避免不必要的浪費;并且您將嘗試的大多數基準測試幾乎完全是不必要的浪費。
基準測試很難。
- 1 回答
- 0 關注
- 194 瀏覽
添加回答
舉報
0/150
提交
取消