go - 如何分配常驻内存?
问题描述
之后我发现b := make([]byte,4096000000)
,分配的内存是虚拟内存,我想将它们标记为 RES(如上图所示的物理内存使用情况),如何做到这一点?
rand.Read(b)
很慢。
解决方案
每页至少使用一个字节。例如,
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
推荐阅读
- java - 如何总结年代?
- javascript - 修复 Rails 应用程序中的“Uncaught ReferenceError: Highcharts is not defined”
- intellij-idea - 如何使用 IntelliJ IDEA 跳过分号?
- jquery - 如何在同一个 \DB::statement() 中使用多个数据库连接
- angular - 如何从外部元素访问相应的组件?
- javascript - 隔离导轨插件上的远程链接不起作用
- java - 尽管有 OpenJDK 的 GNU GPL v2,为什么公司可以为其 JDK 版本收费?
- haskell - 基于 `fmap` 的 `<*>` 的实现对于 Maybe applicative 是特殊的还是可以推广到其他 applicative?
- python - 在 Keras 上使用回调 Tensorboard 时出现 AttributeError:“模型”对象没有属性“run_eagerly”
- apache-spark - Spark加载大型镶木地板文件很长的垃圾收集时间