无聊的代码:空转占用CPU和内存
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
这个用于甲骨文的保活,对吧?