运行程序时,cpu的使用率突然降到很低的问题

开心海贼 2012-05-14 06:08:57
运行程序,刚开始时cpu使用率正常一直稳定在50%以上,不过运行10多分钟以后,使用率开始下降,且下降很快,过了2分钟降到2%~9%,并且以后一直维持这个水平,害得我程序跑了一宿,还没跑出结果。然后又调试了一下午,仍然没有结果。到底什么原因?请教下各位。
...全文
5273 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
开心海贼 2012-05-16
  • 打赏
  • 举报
回复
怎么使用log,可以提供些资料么?[Quote=引用 4 楼 的回复:]
cpu占用率高,通常意味着你的CPU在大量地进行计算,如循环部分。占用率低意味着你的程序在进行输入输出,大部分在等待资源,检查一下你的程序结构,必要时打印log以分析原因。我不认为楼上的回答回答在点子上。
[/Quote]
赵4老师 2012-05-15
  • 打赏
  • 举报
回复
检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!
忘世麒麟 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

自增还有位操作?引用 1 楼 的回复:
优化一下程序,使用const等修饰词,在for,while等循环语句中使用位操作,而不是自增或者自减操作.
[/Quote]
将自增的变量化为二进制,自增操作使用位操作,等同于++(--).
muyi66 2012-05-15
  • 打赏
  • 举报
回复
观察机器运行状态,如果CPU占用率降低的同时硬盘指示灯长亮,则多半是你的机器耗尽了内存,导致系统处在不停的内存页面交换状态。

耗尽内存有可能是这些:你申请了太大内存,以至于机器不能提供足够的内存给你使用,不得不靠虚拟内存来提供空间;你的程序里发生内存泄露,而且很严重。
morebread 2012-05-15
  • 打赏
  • 举报
回复
个人感觉可能是死锁了或者进入某个死循环。
这种现象感觉LZ应该好好查一下代码,运行的时候打一下log排查一下
baichi4141 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

其实我的想法是内存里的资源经常性的换进换出,由此影响cpu的使用率,于是程序动态申请较大的空间,尽量避免内存上的操作,通过测试,cpu使用率》50%的时间可以持续到15分钟左右,可是往后又变为2%~9%,首先说明一点,动态申请的空间绝对够用。于是不应该出现内存的大量操作。很是费解,有木有其他可能原因?引用 4 楼 的回复:
cpu占用率高,通常意味着你的CPU在大量地进行计算,如循环部分。占……
[/Quote]
内存是操作系统负责管理的,你动态申请超大的空间,只意味着内存被更频繁的置换
开心海贼 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
引用 6 楼 的回复:

其实我的想法是内存里的资源经常性的换进换出,由此影响cpu的使用率,于是程序动态申请较大的空间,尽量避免内存上的操作,通过测试,cpu使用率》50%的时间可以持续到15分钟左右,可是往后又变为2%~9%,首先说明一点,动态申请的空间绝对够用。于是不应该出现内存的大量操作。很是费解,有木有其他可能原因?引用 4 楼 的回复:
cpu占用率高,通常意味着你的CPU在大量……
[/Quote]
我晕了,打了半个小时的字,点了个引用,全没有了,犯2了啊,想哭,感觉回复方式设置的太不合理了。
好郁闷呀。不管了,你能不能解释下你说的这句话什么意思,怎么频繁置换。
开心海贼 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
引用 6 楼 的回复:

其实我的想法是内存里的资源经常性的换进换出,由此影响cpu的使用率,于是程序动态申请较大的空间,尽量避免内存上的操作,通过测试,cpu使用率》50%的时间可以持续到15分钟左右,可是往后又变为2%~9%,首先说明一点,动态申请的空间绝对够用。于是不应该出现内存的大量操作。很是费解,有木有其他可能原因?引用 4 楼 的回复:
cpu占用率高,通常意味着你的CPU在大量……
[/Quote]
我晕了,打了半个小时的字,点了个引用,全没有了,犯2了啊,想哭,感觉回复方式设置的太不合理了。
好郁闷呀。不管了,你能不能解释下你说的这句话什么意思,怎么频繁置换。
mars_man 2012-05-15
  • 打赏
  • 举报
回复
应该是在某个环节阻塞,而这个阻塞不可退出。
再者就是这个阻塞是可退出的,不过长期大量时间消耗在这上面,比如循环阻塞,阻塞时间过长等等。
mars_man 2012-05-15
  • 打赏
  • 举报
回复
++[Quote=引用 8 楼 的回复:]

说明你死循环了
[/Quote]
qq120848369 2012-05-14
  • 打赏
  • 举报
回复
说明你死循环了
liuwons 2012-05-14
  • 打赏
  • 举报
回复
貌似现在的输入输出系统都不太占用CPU时间了,除非程序的往后计算依赖输入输出的执行,LZ可以查看下是不是这样的。。。
[Quote=引用 4 楼 的回复:]

cpu占用率高,通常意味着你的CPU在大量地进行计算,如循环部分。占用率低意味着你的程序在进行输入输出,大部分在等待资源,检查一下你的程序结构,必要时打印log以分析原因。我不认为楼上的回答回答在点子上。
[/Quote]
开心海贼 2012-05-14
  • 打赏
  • 举报
回复
其实我的想法是内存里的资源经常性的换进换出,由此影响cpu的使用率,于是程序动态申请较大的空间,尽量避免内存上的操作,通过测试,cpu使用率》50%的时间可以持续到15分钟左右,可是往后又变为2%~9%,首先说明一点,动态申请的空间绝对够用。于是不应该出现内存的大量操作。很是费解,有木有其他可能原因?[Quote=引用 4 楼 的回复:]
cpu占用率高,通常意味着你的CPU在大量地进行计算,如循环部分。占用率低意味着你的程序在进行输入输出,大部分在等待资源,检查一下你的程序结构,必要时打印log以分析原因。我不认为楼上的回答回答在点子上。
[/Quote]
开心海贼 2012-05-14
  • 打赏
  • 举报
回复
没有,cpu温度不高25度左右,内存使用率一直很高,从程序开始一直到结束,内存使用一直很高,这是问题限定的,从程序开始10分钟一直不影响cpu使用率。资源卡锁,你是否介绍详细些?[Quote=引用 3 楼 的回复:]
有没有可能是资源卡锁了。。。
或者你的CPU温度太高了?
或者内存使用率太高?
[/Quote]
liangbch 2012-05-14
  • 打赏
  • 举报
回复
cpu占用率高,通常意味着你的CPU在大量地进行计算,如循环部分。占用率低意味着你的程序在进行输入输出,大部分在等待资源,检查一下你的程序结构,必要时打印log以分析原因。我不认为楼上的回答回答在点子上。
liuwons 2012-05-14
  • 打赏
  • 举报
回复
有没有可能是资源卡锁了。。。
或者你的CPU温度太高了?
或者内存使用率太高?
开心海贼 2012-05-14
  • 打赏
  • 举报
回复
自增还有位操作?[Quote=引用 1 楼 的回复:]
优化一下程序,使用const等修饰词,在for,while等循环语句中使用位操作,而不是自增或者自减操作.
[/Quote]
忘世麒麟 2012-05-14
  • 打赏
  • 举报
回复
优化一下程序,使用const等修饰词,在for,while等循环语句中使用位操作,而不是自增或者自减操作.

65,176

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧