精华内容
下载资源
问答
  • 任务管理器句柄数
    千次阅读
    2018-03-06 16:01:21

    句柄数不停增加

    原来的程序:
    CSocket sock         //开始
    循环开始             //不出意外应该能够执行1500次左右然后挂掉
    sock.create(....     //中间我好象还不止一次这么操作的
    循环结束
    sock.close()         //这里结束
      
    现在的程序:

    循环开始            //开始
    CSocket sock
    sock.create(....    
    sock.close          //在一切可能退出的地方都close一下
    循环结束            //结束

     

     

    到底是什么原因使一个进程的句柄数不断增加,为什么句柄数增加到一定数目就会当呢?

    句柄有很多种(HDC,HPEN,HANDLE,HINSTANCE.....)
    它代表windows中的一种资源,比如你在重绘中用了HDC而使用完忘记释放它那么就可能出现句柄数一直增加的情况。

    其实,句柄就是一个数字,系统可以把它转换成指向某种资源的指针 ,普通程序一般无法做到。也就是说,你可以通过它来分配操作   释放系统资源。而不必关心系统是怎么管理的。句柄数增加的情况   可能是资源泄露吧,不断的申请某种资源,但没有释放操作,最后   系统为这个进程分配的资源被耗近,为了不让整个系统崩溃,就把这个进程杀掉了,大概是这样了,具体泄露的是什么,。要看程序才能知道~~~~~ 。


    Windows句柄数的限制问题,最近发现以前写的部分程序存在句柄数不断增加,系统运行一段时间后就会出现问题

    检查发现这是由于创建线程完成以后没有调用CloseHandle,导致句柄数量不断增加,而操作系统对句柄最大数量是有限制的,经测试,在Windows XP SP3 下大概只能开到34万个,之后开任何程序都可能被报错。

    经过代码检测,发现在常用的Read和Write操作中没有释放句柄导致此问题,代码如下所示:

        OVERLAPPED m_osWrite;
        memset(&m_osWrite,0,sizeof(OVERLAPPED));
        m_osWrite.Internal = 0;
        m_osWrite.InternalHigh = 0;
        m_osWrite.Offset = 0;
        m_osWrite.OffsetHigh = 0;
        m_osWrite.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);    

    此处在WriteFile的时候,使用了CreateEvent一个HANDLE,但是没有使用CloseHandle释放句柄,所示导致此问题。 加上CloseHandle(m_osWrite.hEvent)即可;

    另一处出错的地方如下所示:

        OVERLAPPED m_osRead;
        memset(&m_osRead,0,sizeof(OVERLAPPED));
        m_osRead.Internal = 0;
        m_osRead.InternalHigh = 0;
        m_osRead.Offset = 0;
        m_osRead.OffsetHigh = 0;
        m_osRead.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);

    这是在ReadFile用到,照样使用CloseHandle(m_osRead.hEvent)即可。

    另外一些常见句柄释放方式:

    HDEVINFO                 hardwareDeviceInfo;

    创建方式:

    hardwareDeviceInfo = 
            SetupDiGetClassDevs ( pGuid,
            NULL, // Define no enumerator (global)
            NULL, // Define no
            (DIGCF_PRESENT |           // Only Devices present
            DIGCF_DEVICEINTERFACE)); // Function class devices.
    释放方式:
    SetupDiDestroyDeviceInfoList (hardwareDeviceInfo);[喝小酒的网摘]http://blog.const.net.cn/a/3130.htm

    更多相关内容
  • win10任务管理器中查看进程句柄

    千次阅读 2020-01-01 13:45:29
    与之前的在菜单栏-查看里面设置 选择列 不同,win10的“选择列”要在 “详细信息”这里,在列表头 那里 右键弹出菜单栏,里面有“选择列”,然后单击“选择列”,就可以在弹出的对话框中选中 “句柄” ,然后“详细...

    与之前的在菜单栏-查看里面设置 选择列 不同,win10的“选择列”要在 “详细信息”这里,在列表头 那里 右键弹出菜单栏,里面有“选择列”,然后单击“选择列”,就可以在弹出的对话框中选中 “句柄” ,然后“详细信息”中就有显示句柄了:

    展开全文
  • 输入进程的PID,在任务管理器中可以添加PID列即可查看到,然后输入要监控的间隔。启动后即可监控,停止后会在程序目录生成一个日志。
  • 易语言禁止文件方式屏蔽任务管理器源码系统结构:易语言禁止文件方式屏蔽任务管理器源码,禁止文件方式屏蔽任务管理器 ======窗口程序集1 || ||------_按钮1_被单击 || ||------_按钮2_被单击
  • 易语言任务管理器

    2020-08-21 14:59:43
    易语言任务管理器源码系统结构:进程刷新, ======窗口程序集1 || ||------__启动窗口_创建完毕 || ||------进程刷新 || ||------_超级列表框1_鼠标右键被按下 || ||------_结束进程_被选择 || ||------
  • 任务管理器cpu多少才是正常

    千次阅读 2021-07-21 02:38:59
    Windows任务管理器提供了有关计算机性能的信息,并显示了计算机上所运行的程序和进程的详细信息;下面是小编带来的关于任务管理器cpu多少才是正常的内容,欢迎阅读!任务管理器cpu多少才是正常:使用率只要不是一直是...

    Windows任务管理器提供了有关计算机性能的信息,并显示了计算机上所运行的程序和进程的详细信息;下面是小编带来的关于任务管理器cpu多少才是正常的内容,欢迎阅读!

    任务管理器cpu多少才是正常:

    使用率只要不是一直是50%以上,都算正常的。没跑其他程序的时候小于15%都是正常的。

    windows在后台有不少进程在运行,在打开“任务管理器”查看CPU使用率的时候,“任务管理器”本身也要占一定的CPU使用率。

    使用率过高的原因有:

    防杀毒软件造成故障;

    驱动没有经过认证,造成cpu资源占用100%;

    病毒、木马造成;

    启动项太多;

    对应的解决办法:

    由于新版的kv、金山、瑞星都加入了对网页、插件、邮件的随机监控,无疑增大了系统负担。处理方式:基本上没有合理的处理方式,尽量使用最少的监控服务吧,或者,升级你的硬件配备。

    大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。 处理方式:尤其是显卡驱动特别要注意,建议使用微软认证的或由官方发布的驱动,并且严格核对型号、版本。

    大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。 处理方式:尤其是显卡驱动特别要注意,建议使用微软认证的或由官方发布的驱动,并且严格核对型号、版本。

    开始->;运行->;msconfig->;启动,关闭不必要的启动项。

    相关阅读推荐:

    Windows任务管理器提供了有关计算机性能的信息,并显示了计算机上所运行的程序和进程的详细信息;如果连接到网络,那么还可以查看网络状态并迅速了解网络是如何工作的。它的用户界面提供了文件、选项、查看、窗口、关机、帮助等六大菜单项,其下还有应用程序、进程、性能、联网、用户等五个标签页,窗口底部则是状态栏,从这里可以查看到当前系统的进程数、CPU使用比率、更改的内存

    页面文件使用记录:显示页面文件的量随时间的变化情况的图表。也可以使用“更新速度”设置项。

    总数:显示计算机上正在运行的句柄、线程、进程的总数。

    执行内存:分配给程序和操作系统的内存,由于虚拟内存的存在,“峰值”可以超过最大物理内存,“总数”值则与“页面文件使用记录”图表中显示的值相同。[2]

    句柄数:所谓句柄实际上是一个数据,是一个Long (整长型)的数据。

    句柄是WINDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。

    从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。

    如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢?

    为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。

    句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象

    本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。

    但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。

    线程是指程序的一个指令执行序列,WIN32 平台支持多线程程序,允许程序中存在多个线程。在单 CPU 系统中,系统把 CPU 的时间片按照调度算法分配给各个线程,因此各线程实际上是分时执行的,在多 CPU 的 Windows NT 系统中, 同一个程序的不同线程可以被分配到不同的 CPU 上去执行。由于一个程序的各线程是在相同的地址空间运行的,因此设及到了如何共享内存, 如何通信等问题,这样便需要处理各线程之间的同步问题,这是多线程编程中的一个难点。

    线程,也被称为轻量进程(lightweight processes)。计算机科学术语,指运行中的程序的调度单位。

    线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥有的全部资源。线程可以创建和撤消线程,从而实现程序的并发执行。一般,线程具有就绪、阻塞和运行三种基本状态。

    在多中央处理器的系统里,不同线程可以同时在不同的中央处理器上运行,甚至当它们属于同一个进程时也是如此。大多数支持多处理器的操作系统都提供编程接口来让进程可以控制自己的线程与各处理器之间的关联度(affinity)。

    进程是程序在一个数据集合上运行的过程(注:一个程序有可能同时属于多个进程),它是操作系统进行资源分配和调度的一个独立单位,进程可以简单的分为系统进程(包括一般Windows程序和服务进程)和用户进程。 物理内存:计算机上安装的总物理内存,也称RAM,“可用数”物理#FormatImgID_1#

    内存中可被程序使用的空余量。但实际的空余量要比这个数值略大一点,因为物理内存不会在完全用完后才去转用虚拟内存的。也就是说这个空余量是指使用虚拟内存(pagefile)前所剩余的物理内存。“系统缓存”被分配用于系统缓存用的物理内存量。主要来存放程序和数据等。一但系统或者程序需要,部分内存会被释放出来,也就是说这个值是可变的。

    认可用量总数:其实就是被操作系统和正运行程序所占用内存总和,包括物理内存和虚拟内存(page file)。它和上面的PF使用率是相等的。“限制”指系统所能提供的最高内存量,包括物理内存(RAM)和虚拟(page file)内存。“峰值”指一段时间内系统曾达到的内存使用最高值。如果这个值接近上面的“限制”的话,意味着要么你增加物理内存,要么增加pagefile,否则系统会给你颜色看的!

    任务管理器cpu多少才是正常

    展开全文
  • 简易任务管理器 可枚举、关闭进程、句柄、线程等 附带易语言源码 效果图 http://bbs.eyuyan.com/UploadFile/2010-2/201021519265860568.gif
  • Process Explorer 是一款增强型的任务管理器,你可以使用它方便地管理你的 程序进程,能强行关闭任何程序(包括系统级别的不允许随便终止的”顽固”进程)。除此之外,它还详尽地显示计算机信息:CPU、内存使用情况,...
  • 任务管理器——性能——资源监视——CPU选项卡——关联的句柄——搜索句柄——输入文件夹名——点击搜索

    任务管理器——性能——资源监视器——CPU选项卡——关联的句柄——搜索句柄——输入文件夹名——点击搜索

    展开全文
  • C#写的任务管理器

    2013-05-17 22:25:24
    实现网卡流量监控,程序中使用很多API,用来获取系统资源,其他窗口信息(句柄hwnd,图标Icon等)
  • 查看进程占用的句柄数

    万次阅读 2018-04-01 14:56:49
    1、每个进程所能占用的句柄数是有上限的,如果程序打开文件、...2、linux下查看进程占用句柄数: ls -l /proc/进程ID/fd | wc -l3、win7查看占用句柄数任务管理器--进程---查看--选择列,勾选句柄。则可见下图:...
  • 任务管理器内结束一个任务后导致黑屏,这是资源管理崩溃。 解决办法: 打开任务管理器, 选择文件–>运行新任务–>输入 c:\windows\explorer.exe
  • 在我高中时,那个时候东方还特别火,当时B站上的野生技术协会里就几乎被BadApple屠版了,从一开始的原版视频到后来的控制台动画,从记事本动画再到的任务管理器动画,可以说大佬们在尝试使用各种原本不可能的东西放...
  • Windows任务管理器参数解释

    千次阅读 2019-06-05 18:04:55
    Windows任务管理器参数解释 一、概述及菜单  任务管理器提供正在您的计算上运行的程序和进程的相关信息。也显示最常用的度量进程性能的单位。 使用任务管理器可以监视计算机性能的关键指示。可以查看正在...
  • 运行自己的程序,进行各种操作,并查看任务管理器中GDI对象和句柄数的变化。 如果在某次可逆操作中,例如,弹出一个对话框,然后关闭,GDI对象或句柄数先增加了,然后减少了,但是总量还是增加了,说明存在内存泄露...
  • Process Explorer 的显示有两个子窗口所组成,窗口上方会显示出当前活跃的程序进程,包括它们的详细描述,窗口下方则会显示出通过资源管理器模式运行的应用程序的相关信息,以及它们所调用的DLL和打开的句柄,该...
  • VC++之MFC从零开始实现windows系统任务管理器(一、windows任务管理器界面的制作) 通过本例程从零开始实现一个基于windows的任务管理器。 软件工具:VisualStudio2017 编程语言:VC++ 文章目录 VC++之...
  • 在本篇文章里我们给大家详细讲述了易语言句柄的概念以及相关知识点内容,有需要的朋友们可以学习参考下。
  • 超强任务管理器Process Explorer的使用

    千次阅读 2020-06-17 10:35:25
    文章目录一、关于Process Explorer二、下载地址三、如何使用1、Process Explorer主界面2、显示进程的系统信息3、显示当前进程所加载的DLL4、显示当前进程所占用的系统资源句柄5、操控进程以及显示进程的内部信息6、...
  • 进入任务管理器→进程→选择查看(选择列→句柄数)→观看该进程的句柄数。 解决方法一:就是重新启动该程序(最治本)。 解决方法二:右键该项,点击转到服务,确定一下具体涉及到哪些服务,将其关掉。 ...
  • procexp进程管理器

    2018-01-19 16:37:28
    Process Explorer这款增强型的任务管理器,你可以使用它方便地管理你的程序进程,能强行关闭任何程序(包括系统级别的不允许随便终止的“顽固”进程)。除此之外,它还详尽地显示计算机信息:CPU、内存使用情况,DLL、...
  • // (内存使用,虚拟内存大小,句柄数,线程) // unsigned int op = 1; switch(op) { case 0:runtest(do_nop);break; // 一直维持在(652K,224K,7,1) case 1:runtest(do_new);break; // 内存和虚拟内存...
  • 前言: 异常信息: System.Reflection.TargetInvocationException:Exception has been thrown by ...System.ComponentModel.Win32Exception:当前程序已使用了Windows管理器对象的系统允许的所有句柄
  • 问题描述 “任务管理器”中“进程”各个选项卡的含义? 总结PID(进程标识符)唯一标识所运行进程的编号。 用户名 运行该进程的用户帐户。 会话标识 标识进程所有者的编号。当多个登录的用户时,每个用户将有...
  • 主要介绍了C# Windows API应用之基于GetDesktopWindow获得桌面所有窗口句柄的方法,结合实例形式分析了GetDesktopWindow函数用于获取窗口句柄的具体使用方法与相关注意事项,需要的朋友可以参考下
  • 当在任务管理器里面结束进程,不小心关掉windows资源管理时,电脑黑屏如何解决? 第一步,使用快捷键 Ctrl+Shift+Ecs 启动任务管理器 第二步,点击左上角的文件,然后选择点击运行新任务 3.第三步,在弹出的...
  • FreeRTOS任务管理

    千次阅读 2022-01-02 17:22:46
    一、任务函数 务是由 C 语言函数实现的。唯一特别的只是任务的函数原型,其必须返回 void,而且带有一个 void 指针参数。 每个任务都是在自己权限范围内的一个小程序。其具有程序入口,通常会运行在一个死循环中,也...
  • 句柄问题分析

    2021-05-16 14:30:28
    什么是句柄句柄就是一个对象的标识符,只要获得对象的句柄,我们就可以对对象进行任意的操作,包括窗口,按钮,图标,输出设备,控件或者文件等;句柄是一种特殊的智能指针,用一个唯一的整数值标识一个对象(即编号)...
  • 任务管理器和内存泄露紧密相关的只有两项,一个是内存使用率,一个是当前句柄数。 方法分别如下: 1,内存泄露的方法: 打开任务管理器,此时要减少电脑或虚拟机上其它类型的活动程序,尽量保证查看到的参数和...
  • 制作播放器的时候,需要留意句柄数量,因为随着分屏的数量增加和界面的切换,句柄在不停变化。播放器占用的句柄不少,一个播放器开始播放就占用100多个句柄。不过播放16个视频暂时看来是够用的。   如何修改...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,498
精华内容 22,599
关键字:

任务管理器句柄数