1 电脑屏幕显示变成很大字体的那种;
2 此时打开比如网上邻居、任务管理器、设备管理器等 ,都会出现弹出对话框 “系统资源不足,无法完成请求的服务”;
程序运行期间,从任务管理起看,没有什么异常,内存、句柄数、现程数都稳定,而且电脑的内存使用也没有发现异常 ;
我用 bound check 检查代码,也没有发现特别泄漏什么的!
大家有遇到过否?或者有没有什么排查思路?谢谢
13 个解决方案
#1
检查一下具体的句柄是否被占用完如:网络SOCKET通讯句柄,GDI的句柄不断增长...这样引起资源流失
还有你的VC程序是你自己写的,有源码?如果有源码,在收发数据时检查有没有异常情况没处理的,比如发生数据阻塞异常什么的,处理包数据解析处理是否得当?
还有你的VC程序是你自己写的,有源码?如果有源码,在收发数据时检查有没有异常情况没处理的,比如发生数据阻塞异常什么的,处理包数据解析处理是否得当?
#2
任务管理器中有一列是“gdi对象”,看看它有没有变得很大
#3
任务管理器检查内存和GDI句柄有无异常
#4
GDI句柄 , 用户句柄 楼上都说了
#5
任务管理器中,查看GDI句柄。。。
#6
多谢各位 ,我特别留意了GDI 对象,都没有变化 ;
用户对象 、线程数据 也都没有什么变化 !
跟刚开始 运行差不多!
#7
代码都自己写。收发那块其实很简单,无非就是接收数据发送数据,都用ReadFile ,WriteFile 操作 !
我用BoundCheck检查也没有什么异常!
#8
你的USB是什么东西, 是否有驱动, 如果驱动有问题可能出现这个问题,
任务管理器可以看看核心内存增加的多不多
任务管理器可以看看核心内存增加的多不多
#9
那要是这样的情况,那就很头疼了。特别是需要长时间测试才能看见问题的程序...
在看看像sendmessge,postmessage有没有这样的发消息的地方,全部用postmessage处理
#10
自己看内存增加变化。。。
#11
你的USB是什么东西, 是否有驱动, 如果驱动有问题可能出现这个问题,
任务管理器可以看看核心内存增加的多不多
嗯我看了 ,核心内存不断增加,
从 14:21 -----15:15
186048-----203820
是不断增加趋势 ;
谢谢,我就从这个下手去排查;
#12
搞定没?楼主,我也碰到一样的问题了
#13
检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!
搜“GDI泄露检测”
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!
搜“GDI泄露检测”
#1
检查一下具体的句柄是否被占用完如:网络SOCKET通讯句柄,GDI的句柄不断增长...这样引起资源流失
还有你的VC程序是你自己写的,有源码?如果有源码,在收发数据时检查有没有异常情况没处理的,比如发生数据阻塞异常什么的,处理包数据解析处理是否得当?
还有你的VC程序是你自己写的,有源码?如果有源码,在收发数据时检查有没有异常情况没处理的,比如发生数据阻塞异常什么的,处理包数据解析处理是否得当?
#2
任务管理器中有一列是“gdi对象”,看看它有没有变得很大
#3
任务管理器检查内存和GDI句柄有无异常
#4
GDI句柄 , 用户句柄 楼上都说了
#5
任务管理器中,查看GDI句柄。。。
#6
任务管理器中,查看GDI句柄。。。
任务管理器检查内存和GDI句柄有无异常
任务管理器中有一列是“gdi对象”,看看它有没有变得很大
多谢各位 ,我特别留意了GDI 对象,都没有变化 ;
用户对象 、线程数据 也都没有什么变化 !
跟刚开始 运行差不多!
#7
检查一下具体的句柄是否被占用完如:网络SOCKET通讯句柄,GDI的句柄不断增长...这样引起资源流失
还有你的VC程序是你自己写的,有源码?如果有源码,在收发数据时检查有没有异常情况没处理的,比如发生数据阻塞异常什么的,处理包数据解析处理是否得当?
代码都自己写。收发那块其实很简单,无非就是接收数据发送数据,都用ReadFile ,WriteFile 操作 !
我用BoundCheck检查也没有什么异常!
#8
你的USB是什么东西, 是否有驱动, 如果驱动有问题可能出现这个问题,
任务管理器可以看看核心内存增加的多不多
任务管理器可以看看核心内存增加的多不多
#9
检查一下具体的句柄是否被占用完如:网络SOCKET通讯句柄,GDI的句柄不断增长...这样引起资源流失
还有你的VC程序是你自己写的,有源码?如果有源码,在收发数据时检查有没有异常情况没处理的,比如发生数据阻塞异常什么的,处理包数据解析处理是否得当?
代码都自己写。收发那块其实很简单,无非就是接收数据发送数据,都用ReadFile ,WriteFile 操作 !
我用BoundCheck检查也没有什么异常!
那要是这样的情况,那就很头疼了。特别是需要长时间测试才能看见问题的程序...
在看看像sendmessge,postmessage有没有这样的发消息的地方,全部用postmessage处理
#10
自己看内存增加变化。。。
#11
你的USB是什么东西, 是否有驱动, 如果驱动有问题可能出现这个问题,
任务管理器可以看看核心内存增加的多不多
嗯我看了 ,核心内存不断增加,
从 14:21 -----15:15
186048-----203820
是不断增加趋势 ;
谢谢,我就从这个下手去排查;
#12
搞定没?楼主,我也碰到一样的问题了
#13
检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!
搜“GDI泄露检测”
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!
搜“GDI泄露检测”