• golang写一个占用大内存的程序


    场景, 需要让系统的内存使用率上升到超过20%, 可以用golang写一个简单的程序,让它占用很大的内存,从而使系统的内存使用率上升。

    package main
    
    import (
        "log"
        "time"
        "runtime"
        "fmt"
    )
    
    func PrintMemUsage() {
            var m runtime.MemStats
            runtime.ReadMemStats(&m)
            // For info on each, see: https://golang.org/pkg/runtime/#MemStats
            fmt.Printf("Alloc = %v MiB", bToMb(m.Alloc))
            fmt.Printf("	TotalAlloc = %v MiB", bToMb(m.TotalAlloc))
            fmt.Printf("	Sys = %v MiB", bToMb(m.Sys))
            fmt.Printf("	NumGC = %v
    ", m.NumGC)
    }
    
    func bToMb(b uint64) uint64 {
        return b / 1024 / 1024
    }
    
    func main() {
    
        var a []string
    
        for i:= 1; i<31000000; i++ {
            a = append(a, "testingiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii123")
        }
        log.Println("end---")
        PrintMemUsage()
        for {
            //runtime.GC()  //调用 runtime.GC() 进行手动触发GC进行内存回收
            PrintMemUsage()
            log.Println(a[3100000])
            time.Sleep(time.Second * 2)
        }
        time.Sleep(time.Second * 100)
        log.Println("test memory end...", len(a))
    }
                                                                                                                            
    

      

     手动触发GC

     -------------------------------------------------------------------------------------------------------0804------------

    一个消耗内存(以Mb为单位)的小程序

        有时候需要消耗指定大小的内存来验证一些问题,这个时候一些小程序就可以帮上忙了,下面这个小程序malloc_mb.c就是这样的作用:

    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>
     
    #define UNIT (1024*1024)
     
    int main(int argc, char *argv[])
    {
            long long i = 0;
            int size = 0;
     
            if (argc != 2) {
                    printf(" === argc must 2
    ");
                    return 1;
            }
            size = strtoull(argv[1], NULL, 10);
            if (size == 0) {
                    printf(" argv[1]=%s not good
    ", argv[1]);
                    return 1;
            }
     
            char *buff = (char *) malloc(size * UNIT);
            if (buff)
                    printf(" we malloced %d Mb
    ", size);
            buff[0] = 1;
     
            for (i = 1; i < (size * UNIT); i++) {
                    if (i%1024 == 0)
                            buff[i] = buff[i-1]/8;
                    else
                            buff[i] = i/2;
            }
            pause();
    }
    ————————————————
    版权声明:本文为CSDN博主「温暖的电波」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wennuanddianbo/article/details/81709894
    

       通过  gcc malloc_mb.c -o mallocMb 命令就可以生成一个小程序mallocMb; 使用./mallocMb 100 &就可以在系统中消耗掉100M的内存。

  • 相关阅读:
    Top 10 Product Manager Skills To Boost Your Resume In 2021
    大数据知识梳理
    B端产品如何设计权限系统?
    华三盒式交换机MAC、ARP、Route性能表项参数查询
    中了传说中的挖矿病毒
    SqlServer 2019 事务日志传送
    docker中生成的pdf中文是方框的解决方案
    The Live Editor is unable to run in the current system configuration
    2021 面试题大纲
    五分钟搞定Docker安装ElasticSearch
  • 原文地址:https://www.cnblogs.com/oxspirt/p/15092862.html
Copyright © 2020-2023  润新知