社区
C++ 语言
帖子详情
自己写的应用程序 一运行就占用内存100%是怎么回事儿呢
lily0628
2012-03-26 05:07:59
在任务管理器中察看
占用内存97%
导致这种状况的原因可能有哪些呢
...全文
1775
35
打赏
收藏
自己写的应用程序 一运行就占用内存100%是怎么回事儿呢
在任务管理器中察看 占用内存97% 导致这种状况的原因可能有哪些呢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
35 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
庄鱼
2012-03-28
打赏
举报
回复
windows下有winProc函数,作用是一样的
lily0628
2012-03-28
打赏
举报
回复
[Quote=引用 30 楼 的回复:]
建一个volatile属性的信号量,在你的程序里将出口返回值与该变量挂钩,这样,你就可以用while语句进行死循环读该变量值。由于该变量属易变类型,CPU在这里其实是什么都不作的,仅仅是wait,直到该变量发生变化。由于相关函数都与该变量相关,实际上也就建立了一个仲裁退出、跳跃机制,以便程序根据信号量的变化随时响应相应的操作。作为哑程序,就是一个while循环与switch跳转语句的结合,由于该程……
[/Quote]
谢谢你的回复啊
很详细
我去网上查了一下
守候进程好像是linux下的东西
不知道windows下有没有类似的实现呢
翅膀又硬了
2012-03-28
打赏
举报
回复
死循环了吧?
nx_lyj428
2012-03-28
打赏
举报
回复
vld-1.9h-setup,这个工具就不错
nx_lyj428
2012-03-28
打赏
举报
回复
去开源社区下个内存泄露检查工具,很方便的
lily0628
2012-03-27
打赏
举报
回复
[Quote=引用 27 楼 freefice 的回复:]
程序里出现死循环很正常,你可以写个哑进程:专门处理信号量及空操作,那样的话,CPU忙的情况会降下来。
[/Quote]
写个哑进程:专门处理信号量及空操作
这个要怎么操作呢
不太明白呀
Kaile
2012-03-27
打赏
举报
回复
WaitForSingleObject
不占CPU
庄鱼
2012-03-27
打赏
举报
回复
程序里出现死循环很正常,你可以写个哑进程:专门处理信号量及空操作,那样的话,CPU忙的情况会降下来。
lily0628
2012-03-27
打赏
举报
回复
[Quote=引用 25 楼 kuzuozhou 的回复:]
加了个sleep语句自然会降低cpu消耗率,这好像的确是一种解决办法,我原来也遇到过。
这个cpu使用率是不是也和电脑的状况相关呢
加了sleep之后昨天下午测试是50%
今天早上来测试只1%了
代码没做什么改动的
pengfoo
2012-03-27
打赏
举报
回复
加了个sleep语句自然会降低cpu消耗率,这好像的确是一种解决办法,我原来也遇到过。[Quote=引用 21 楼 lily0628 的回复:]
引用 20 楼 lactoferrin 的回复:
检查哪里有死循环
在线程中是有死循环
while(TRUE)
{
if()//如果满足条件,dosomething
{
.....
}
}
昨天在if后面加了个
else
Sleep(500);
CPU使用率下降到了50%
怎么才能再提高一下性能呢
[/Quote]
lily0628
2012-03-27
打赏
举报
回复
[Quote=引用 23 楼 lactoferrin 的回复:]
你这不是游戏,所以应该等待信号才继续
[/Quote]
之前做了一个版本是用了event
SetEvent()
WaitForSingleEvent()
但是pm不喜欢这样
只好改成用变量来判断
需要一直得检测两个变量是不是变成相等了
Lactoferrin
2012-03-27
打赏
举报
回复
你这不是游戏,所以应该等待信号才继续
lily0628
2012-03-27
打赏
举报
回复
[Quote=引用 19 楼 elegant87 的回复:]
在一个循环中new了而没有delete
[/Quote]
没有在循环中new
lily0628
2012-03-27
打赏
举报
回复
[Quote=引用 20 楼 lactoferrin 的回复:]
检查哪里有死循环
[/Quote]
在线程中是有死循环
while(TRUE)
{
if()//如果满足条件,dosomething
{
.....
}
}
昨天在if后面加了个
else
Sleep(500);
CPU使用率下降到了50%
怎么才能再提高一下性能呢
庄鱼
2012-03-27
打赏
举报
回复
建一个volatile属性的信号量,在你的程序里将出口返回值与该变量挂钩,这样,你就可以用while语句进行死循环读该变量值。由于该变量属易变类型,CPU在这里其实是什么都不作的,仅仅是wait,直到该变量发生变化。由于相关函数都与该变量相关,实际上也就建立了一个仲裁退出、跳跃机制,以便程序根据信号量的变化随时响应相应的操作。作为哑程序,就是一个while循环与switch跳转语句的结合,由于该程序该程序始终运行,而且实际上除了捕捉退出、中断陷阱,就是死循环,在系统里不占用CPU资源,因此被称之为哑进程,也有叫守候进程、陷阱函数什么的。
Lactoferrin
2012-03-26
打赏
举报
回复
检查哪里有死循环
elegant87
2012-03-26
打赏
举报
回复
在一个循环中new了而没有delete
lily0628
2012-03-26
打赏
举报
回复
[Quote=引用 17 楼 oldskywolf 的回复:]
cpu使用率 97%,还算正常吧
[/Quote]
不太正常啊
电脑会卡死了
oldskywolf
2012-03-26
打赏
举报
回复
cpu使用率 97%,还算正常吧
lily0628
2012-03-26
打赏
举报
回复
[Quote=引用 15 楼 bofrobber 的回复:]
引用 14 楼 bofrobber 的回复:
cpu和内存问题没有关系吧。估计你代码什么地方写了死循环了,导致一直需要cpu计算。
看错题目了。
我觉得是不是他把cpu写成内存了。
内存有一半是要给内核使用,lz怎么可能看到97%的内存使用率
[/Quote]
en 是cpu使用率97%
加载更多回复(15)
资源管理器自动重启有救了
大家都不明白这是咋
回事儿
!今天,小编就来给大家解释一下资源管理器重启的问题吧! 一、出现资源管理器重启的原因 资源管理器重启的原因有很多,一般出现此故障的系统多为WIN7系统,XP系统出现系统资源不足,经常...
电脑一开机
内存
(共8G)就用了70%以上,任务管理器里面查看没有
占用
内存
很高的进程,原来是驱动问题
出现两次这个问题,都是长时间开机后,出现
内存
占用
很高,重启还是
内存
占用
很高,而且任务管理器里面查看,实际没有进程
占用
那么高。 曾经试过很多种办法,但是一样的现象却有不同的原因。 比如Windows自动更新...
程序到底是怎么回事
计算机上面跑着操作系统,操作系统上
运行
着各种
应用程序
。 进程 :操作系统将时间分为很多细小的时间片,各个程序
占用
一段时间片。 本质上,计算机只会执行预先
写
好的指令而已,这些指令也只是操作数据或者设备。 ...
Andorid性能优化(一) 之 如何给App进行
内存
优化
Android系统为每个应用进程都分配一个有封顶的堆
内存
值,当应用
内存
占用
过高到没有足够的
内存
来提供给新对象分配并且垃圾回收机制也已经没有空间可回收时就会OOM。当一个应用
内存
占用
过高会使一些性能差的手机系统...
Linux
应用程序
开发:进程的一些事儿
进程是一个动态过程,而非静态文件,它是程序的一次
运行
过程,当
应用程序
被加载到
内存
中
运行
之后它就称为了一个进程,当程序
运行
结束后也就意味着进程终止,这就是进程的一个生命周期。Linux 系统下的每一个进程都有...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章