免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2627 | 回复: 8
打印 上一主题 下一主题

[其他] 不断申请内存 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-08 00:13 |只看该作者 |倒序浏览
本帖最后由 shihyu 于 2015-07-08 00:13 编辑
  1. #include <sys/types.h>
  2. #include <signal.h>
  3. #include <stdio.h>
  4. #include <unistd.h>
  5. #include <stdlib.h>

  6. int main()
  7. {
  8.     pid_t pid;
  9.     while (1) {
  10.         char *p;
  11.         pid = fork();

  12.         if (pid == 0) {
  13.             p = (char*)malloc(1024*1024);
  14.         } else {
  15.             p = (char*)malloc(1024*1024);
  16.         }
  17.     }
  18. }
复制代码
我代码这样写有问题嘛? 看起来 memory 使用量没有马上冲高 , 还是 cpu 冲高 , 造成系统很快出现问题

是过快 fork 造成嘛?

谢谢

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
2 [报告]
发表于 2015-07-08 00:44 |只看该作者

  1.         if (pid == 0) {
  2.             p = (char*)malloc(1024*1024);
  3.         } else {
  4.             p = (char*)malloc(1024*1024);
  5.         }
复制代码
没看懂为啥要写这个if/else?

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
3 [报告]
发表于 2015-07-08 01:23 |只看该作者
本帖最后由 shihyu 于 2015-07-08 01:23 编辑

我主要想加快速度吃光系统内存 ,

所在再父进程跟子进程都想去 malloc

论坛徽章:
7
2015年亚洲杯之约旦
日期:2015-03-05 17:03:522015亚冠之山东鲁能
日期:2015-09-29 13:01:2115-16赛季CBA联赛之四川
日期:2016-01-18 15:47:0215-16赛季CBA联赛之广夏
日期:2016-02-24 11:47:1515-16赛季CBA联赛之辽宁
日期:2016-11-01 09:45:4115-16赛季CBA联赛之青岛
日期:2017-02-15 10:02:182016科比退役纪念章
日期:2017-02-16 17:25:35
4 [报告]
发表于 2015-07-08 09:08 |只看该作者
内存申请是 需求页加载吧,你虽然申请了,但系统并没有 给你分配,你往里面写数据,才会给你分配。

论坛徽章:
1
午马
日期:2013-12-19 13:55:53
5 [报告]
发表于 2015-07-08 17:44 |只看该作者
话说:
  1. while(1){
  2.     fork();
  3. }
复制代码
最多能生成多少进程?

论坛徽章:
0
6 [报告]
发表于 2015-07-11 19:21 |只看该作者
我照着楼主的代码写了个测试想看下是不是真如楼主说的内存不上去cpu上去的。结果开始跑的时候机器直接死掉了。。。
cpu冲高应该是while(1)的问题,完全不sleep,你写其任何内容cpu都会冲高的,只要你的while里面有做事情。至于内存不飙高,我感觉还是和交换内存有过,或者如四楼说的,内存没有用到就不会真正分配下来。楼主请务必往申请到的内存上写点东西试试看,然后回来告诉我结果,因为我电脑一跑就跪了
其实我对四楼那个说法蛮感兴趣的。能求一下资料吗。确实不太明白是不是申请了不使用系统就没有给你分配。我只知道如果循环是空循环系统不会分太多时间片给他,不清楚不使用内存是不是真就不分配内存。

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-08-12 06:20:00
7 [报告]
发表于 2015-07-14 00:58 |只看该作者
本帖最后由 framily 于 2015-07-14 00:59 编辑

说得好回复 6# 努力工作的搬砖工


   

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2015-07-14 10:08 |只看该作者
1、你要往内存写点东西,系统才真正分配给你
2、你这个程序很快就会被内核杀掉 out of memory

论坛徽章:
0
9 [报告]
发表于 2015-07-29 11:36 |只看该作者
usleep一下,可以看到内存直线上飚,之所以已启动就死,那是一启动就out of memory,CPU运算很快的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP