C语言小代码,占用1核的CPU资源,以及2G内存。
解释一下原理。C是单线程的,所以,最后那个while死循环将占用完一核的CPU所有资源。
malloc分配2G这个不用解释了,后面的for填充,是因为编译器和操作系统会优化malloc分配的内存,如果你没有用到分配的空间,它并不会真的实际分配。
编译: cc waste.c -o waste 啥? cc不存在? 那就 apt install gcc啦。
运行: nohup ./waste > /dev/null 2>&1
如果想占用更多,就多运行几个呗。当然,想写成service也可以,配置文件我就不贴了。

#include <stdio.h>
#include <stdlib.h>

int main() {
    long long int size = 2LL * 1024LL * 1024LL * 1024LL; // 2GB
    char *memory = (char *)malloc(size);
    if (memory == NULL) {
        printf("内存分配失败!\n");
        return 1;
    }
    long long i;
    unsigned char ch;
    for (i=0;i<size;i++) {
      ch=i%2;
      *(memory+i)=ch;
    }
    while (1) {
    }
    return 0;
}

运行实例(2C12G的vps):

root@sin1:~# uptime
 00:45:47 up 12 days, 11:12,  2 users,  load average: 1.00, 1.00, 1.00

root@sin1:~# free
               total        used        free      shared  buff/cache   available
Mem:        12237708     2523608     7098556        3912     2839040     9714100
Swap:         999420           0      999420

标签: none

仅有一条评论

  1. 路人甲 路人甲

    这个用于甲骨文的保活,对吧?

添加新评论

*如果只是需要与我沟通联系,请telegram @ohyessure, 而不要用评论方式,因为没有你的个人资料,我无法回复及联络你。