模拟-容器程序,一直吃内存

在 Go 语言中,你可以通过不断分配内存来模拟耗尽内存的过程,但需要注意的是,这可能会导致程序崩溃甚至影响系统稳定性,在实际运行中要谨慎操作。
下面是一个简单的示例代码,它通过不断分配内存来模拟malloc耗尽内存的过程:

package main

import (
    "fmt"
    "runtime"
    "time"
)

func main() {
    var mem []byte
    for {
        // 每次分配1MB内存
        newMem := make([]byte, 1024*1024)
        mem = append(mem, newMem...)

        // 输出当前内存使用情况
        var m runtime.MemStats
        runtime.ReadMemStats(&m)
        fmt.Printf("当前已分配内存: %d bytes\n", m.Alloc)

        // 短暂停顿,以便观察输出
        time.Sleep(100 * time.Millisecond)
    }
}

在这个示例中:

  • 我们使用一个无限循环来不断分配内存。
  • 每次分配 1MB 大小的内存块newMem,并将其追加到mem切片中。
  • 通过runtime.ReadMemStats函数获取当前内存使用情况,并打印出来。
  • 使用time.Sleep函数暂停 100 毫秒,以便观察内存增长情况。

请注意,这个程序会持续消耗内存,最终会导致程序因内存不足而崩溃。在实际应用中,这种做法应该仅用于测试或研究内存管理的边界情况。

posted @ 2024-12-31 23:29  小白一生  阅读(22)  评论(0)    收藏  举报