首页 > 解决方案 > 如何分配常驻内存?

问题描述

之后我发现b := make([]byte,4096000000),分配的内存是虚拟内存,我想将它们标记为 RES(如上图所示的物理内存使用情况),如何做到这一点?

rand.Read(b)很慢。

标签: go

解决方案


每页至少使用一个字节。例如,

package main

import (
    "fmt"
    "time"
)

func main() {
    b := make([]byte, 2*1024*1024*1024)
    fmt.Println(len(b))
    pagesize := os.Getpagesize()
    for i := 0; i < 60; i++ {
        for j := 0; j < len(b); j += pagesize {
            b[j] = 42
        }
        time.Sleep(1 * time.Second)
    }
}

输出:

2147483648

最佳:

RES 2.1g

推荐阅读