社区
进程/线程/DLL
帖子详情
请教一个线程调用,内存增加的问题
mylinus
2007-02-08 10:27:50
是这样的,我做一个监控系统时遇到内存泄露的问题.
我用定时器定时取一些系统的数据,在定时器OnTimer函数开了一个线程
AfxBeginThread(ServerCPUThreadProc,GetSafeHwnd(), THREAD_PRIORITY_NORMAL);
然后在ServerCPUThreadProc函数中什么都不运行,内存也会增加(4k的增长率),这是为什么?
如果我把定时器的线程的代码去掉,内存就不会增加
...全文
283
14
打赏
收藏
请教一个线程调用,内存增加的问题
是这样的,我做一个监控系统时遇到内存泄露的问题. 我用定时器定时取一些系统的数据,在定时器OnTimer函数开了一个线程 AfxBeginThread(ServerCPUThreadProc,GetSafeHwnd(), THREAD_PRIORITY_NORMAL); 然后在ServerCPUThreadProc函数中什么都不运行,内存也会增加(4k的增长率),这是为什么? 如果我把定时器的线程的代码去掉,内存就不会增加
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mylinus
2007-02-14
打赏
举报
回复
谢谢!好像前面的代码是线程间通讯用的吧?
ATField
2007-02-09
打赏
举报
回复
HANDLE hEvent = ::CreateEvent("_WaitEventName",TRUE,NULL,FALSE);
WaitForSinganlObject(hEvent,INFINITE);
CloseHandle(hEvent);
这段代码是创建/打开名为_WaitEventName的Event(貌似函数参数顺序错了),然后无限等待直到hEvent被设置为止。问题是其他线程有否设置hEvent?如果没有的话那么这个线程就永远不会结束了,内存自然就有泄漏。
mylinus
2007-02-09
打赏
举报
回复
如果不开一个线程来采集数据,它就会跟主程序(比如弹出菜单)等功能发生抢CPU的现象,当点击托盘的图标菜单时很久才会弹出来.所以不得不出个线程让它去采集而不与主线程抢CPU
wildmen
2007-02-09
打赏
举报
回复
纳闷了,既然是定时器,为什么又还要开个线程?
mylinus
2007-02-09
打赏
举报
回复
HANDLE hEvent = ::CreateEvent("_WaitEventName",TRUE,NULL,FALSE);
WaitForSinganlObject(hEvent,INFINITE);
CloseHandle(hEvent);
这些函数在线程里有什么用.是不是要通过CloseHandle(hEvent);来关闭线程的资源?
这里有没有人知道?能不能准时放假就靠你们了
mylinus
2007-02-08
打赏
举报
回复
因为程序是隔一段时间采集数据,内存有升有跌.也不是一直增加,有时会回落.
但过几个小时再去看就是总的增加了些许内存.
mylinus
2007-02-08
打赏
举报
回复
我在线程的部分改成
m_pCPUThread = AfxBeginThread(ServerCPUThreadProc,GetSafeHwnd(), THREAD_PRIORITY_NORMAL);
m_pCPUThread->m_bAutoDelete = TRUE;
在监听某类服务器(它只监听基本的电脑信息)时内存没有增加.四个钟(在正式环境相当于三天)时间内增加了4k.基本上认为不增长内存了.
但监听另一类的服务器(它调用的其它的DLL或服务比较多),它增加的内存有1M左右.
能分析出什么问题吗?有某种策略吗?比如自动重启
pkrobbie
2007-02-08
打赏
举报
回复
线程本身要占内存空间,AfxBeginThread会创建内部对象。
关键是你的线程是否正确的释放了。
mylinus
2007-02-08
打赏
举报
回复
在线等待,快过年了,碰到这事,真麻烦!
我把代码一个一个的拆就是为了找出内存泄漏点,结果创建线程的时候
不知是什么没有释放掉?请教各位
ATField
2007-02-08
打赏
举报
回复
内存会一直增加吗?有可能你看到的内存增加只是暂时现象,只是表明程序的Working Set增加,系统发现你占用的内存增加所以就跟你多“分配”一点内存,即使你不会用到,这样下次你要用到的时候速度会快一些。建议你把增长的曲线画出来,看是否是一直在增加。
mylinus
2007-02-08
打赏
举报
回复
AfxBeginThread产生的对象不是可以自动删除的吗?
如果照我的情况,该怎么来改善代码?
mylinus
2007-02-08
打赏
举报
回复
谢谢各位.那该怎么做才好?
LiALan
2007-02-08
打赏
举报
回复
把创建线程的操作放在OnTimer函数中的做法很少见,每执行一次OnTimer函数就有一个新线程创建出来,线程属于内核对象,即使线程函数什么都不做,线程也会消耗一定的资源。
如何实时获取系统每个进程占用的CPU?--讨论及
请教
如何实时获取系统每个进程占用的CPU?--讨论及
请教
2022年java学习心得体会例文.docx
2022年java学习心得体会例文.docx
JNI接口支持多
线程
并发
调用
的小技巧
在JNI开发过程有这样的
一个
场景: 用JNI封装
调用
另
一个
第三方算法so库,该SO库是能够支持多
线程
并发创建多个处理实例,同时处理数据的。则JNI在封装接口时,也需要注意接口方法并发的情况,这个时候必须尽可能使用局部变量,以免全局变量在某一
线程
中被修改,导致在另一
线程
不能按预期执行。 首先看下第三方so库的两个接口方法: /** * 创建对应token的算法处理实例,返回长度为inst_num的void型指针数组insts。 * 此方法需支持并发创建不同token的实例 */ int create_
多
线程
DLL 回调函数
问题
,当应用程序退出时,有些操作并未完成,造成程序
内存
泄露,如何解决呢
问题
描述如下: 现在有
一个
DLL库,里面定义了
一个
线程
,
线程
里面又
调用
了应用程序中定义的回调函数,这样当应用程序退出时,应用程序中的回调函数还没有执行完毕,停在中间了,造成程序
内存
泄露,Debug
内存
泄露,而Release直接报错。伪代码如下: Dll中定义个类B Class B{ //类B里面定义了
一个
线程
,如 CwinThread afxBeginThread(threa
nodejs cluster多
线程
同步,nodejs多
线程
共享
内存
因为nodejs的I/O操作,底层是开启了多
线程
的当同时有多个IO请求时,主
线程
会创建多个eio
线程
,以提高IO请求的处理速度额外知识点:d.虽然nodejs的I/O操作开启了多
线程
,但是所有
线程
都是基于主
线程
开启的只能跑在
一个
进程当中还是不能充分利用cpu资源pm2进程管理器可以解决这个
问题
pm2是
一个
带有负载均衡功能的Node应用的进程管理器.e.cpu核数与
线程
之间的关系在过去单CPU时代,单任务在
一个
时间点只能执行单一程序。事实上,使用它进行繁重的计算等于摒弃Node几乎所有的优点。
进程/线程/DLL
15,466
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章