电脑系统句柄数是什么意思,电脑句柄无效怎么解决

CPU使用:很容易理解。左柱图表示即时CPU使用率,右曲线图记录过去一段时间CPU占用率。其中红线则表示系统内核使用率。

PF使用率:PF是页面文件page file的简写。但这个数字常常会让人误解,以为是系统当时所用页面文件大小。正确含义则是正在使用的内存之和,包括物理内存和虚拟内存。那么如何得知实际所使用的页面文件大小昵?一般用第三方软件,比如PageFile Monitor,也可以通过windows控制台来看。本人的页面文件预设了300MB,下图可以看到总内存使用207MB,通过控制台查到页面文件的使用率为24%,实际大小为72MB。

物理内存:

总数:好理解,就是机子里所插,看得见摸得着的内存总量。本人机子有内存256MB,换算成字节乘上1024后为262144,大体等于图中的261616。

可用数:物理内存中可被程序使用的空余量。但实际的空余量要比这个数值略大一点,因为物理内存不会在完全用完后才去转用虚拟内存的。也就是说这个空余量是指使用虚拟内存(pagefile)前所剩余的物理内存。

系统缓存:被分配用于系统缓存用的物理内存量。主要来存放程序和数据等。一但系统或者程序需要,部分内存会被释放出来,也就是说这个值是可变的。

认可用量:呵呵,简直不知所云!

总数:其实就是被操作系统和正运行程序所占用内存总和,包括物理内存和虚拟内存(page file)。它和上面的PF使用率是相等的,212468除以1024约等于207M。

限制:指系统所能提供的最高内存量,包括物理内存(RAM)和虚拟(page file)内存。256M再加上我预设的300MPagefile,乘以1024等于569344,大致相等。

峰值:指一段时间内系统曾达到的内存使用最高值。如果这个值接近上面的“限制”的话,意味着要么你增加物理内存,要么增加pagefile,否则系统会给你颜色看的!

核心内存:

总数:操作系统核心程序使用的物理内存。42972除以261616等于16.4%,还不错,比较低,当然低了好啊!

分页数:一旦系统需要这部分物理内存的话,它会被映射到硬盘。

未分页:这部分不会被映射到硬盘。

句柄数:这个东东很专业的。会编程的人知道,我不懂,只知道被称作指针的指针。

线程数:指程序中能独立运行的部分。

进程数:简单理解就是运行的程序数目。

两个问题:

问题一:到底Pagefile要不要设?如果设的话设多大?

设不设pagefile因人因机而已。如果物理内存很大,长期使用中观察所使用的页面文件占物理内存的百分比很低,比如只有百分之几,那就禁用好了。如果需要,设多大?微软推荐值是所安装物理内存的1.5倍。这一般指较低物理内存情况下(384MB以下)。较合理的方法是看实际页面文件使用率,一般正常范围是50-75%。超出这个范围后自己再自行调整Pagefile的大小。

问题二:Pagefile需不需要整理碎片?

呵呵,也需要。但一般的碎片整理方法不能整理Pagefile的,因为Windows不容许。可能是运行整理程序时就在使用Pagefile。那如何整理?很简单,先把当前的Pagefile禁用,然后在其它区新设一个Pagefile,系统重启,将原来Pagefile所在的区进行整理,然后禁用新设的Pagefile,再在刚整理过的老区里再设一个pagefile,重启!

附录1:释义二

CPU使用:CPU的使用百分比

CPU使用记录:处理器使用的量随时间变化的情况

PF使用情况:正被系统使用的页面文件的量

页面文件使用记录:页面文件使用的量随时间的变化的情况

总数:正在运行的句柄,线程,进程的总数

认可用量:分配给程序和操作系统的内存,由于虚拟内存的存在,"峰值"可以超过最大物理内存,"总数"值则与"页面文件使用记录"显示的值相同

物理内存:总物理内存,RAM,"可用数"表示可供使用的内存容量,"系统缓存"显示当前用于映射打开文件的页面的物理内存

核心内存:操作系统内核和设备驱动程序所使用的内存,"页面"是可以复制到页面文件中的内存,由此可以释放物理内存;"非分页"是保留在物理内存中的内存,不会被复制到页面文件中

这个句柄只是从英文handle翻译过来的,只问句是什么意思难以解释,这个是我从别人的空间收集的信息,以下为直接复制希望对你有帮助。参考的连接为:功能上的理解:

什么是"句柄"(handle),handle的本意是把柄,把手的意思。是你与操作系统打交道的东东。

举个通俗的例子,比如你考上了大学,入学后,学校(操作系统)会给你一个学生证号。

注意,这个号码是学校指定的,你无法自选。

有了这个号码(学生证,假设一证多用)享受学校提供的服务:

如你就可以去图书馆借书,去食堂吃饭,去教室上课等等。

但你不能到食堂里买啤酒,因为学校不允许这种服务。

而在计算机中系统提供的服务就是API调用,你有了HANDLE,就可以理直气壮地向系统提出调用API的服务。

而指针的权力就大多了,有了指针你可以到处去喝酒,打架,学校(操作系统)管不着,

所以句柄和指针的区别在于句柄指针调用系统提供的服务。

而句柄虽然是一个能相互区别的号码,但与我们普通的ID号又有区别,

普通的ID号是可以由程序员自己定义的,而句柄不行,它是对象生成是系统指定的,

是为了区别系统中存在的各个对象,这个句柄不是由程序员符给的。

概念上的理解

1。句柄,是整个windows编程的基础,一个句柄是指使用的一个唯一的整数值,

是指一个四字节长的数值,用于标志应用程序中的不同对象和同类对象中的不同的实例,

诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。

应用程序能够通过句柄访问相应的对象的信息。

2。句柄不是一个指针,程序不能利用它句柄来直接阅读文件中的信息。

如果句柄不用在I/O文件中,它是毫无用处的。

3。句柄是windows用来标志应用程序中建立的或是使用的唯一整数,

windows使用了大量的句柄来来标志很多对象。

机制上的理解

前面的分析很经典,但我认为有一点必须指出的。如果不对,请各位指证。

句柄是指针,一点不假,但是这个指针又与C中的指针有不同之处。

因为Windows是一个多任务的系统,其内存是可以移动的,

这样的话如果某一时刻有一个指针指向一块内存,之后的某个时刻却被系统移走了,

如果你再用这个指针的话就会出错。

为了解决这一问题,windows在系统专区开一块内存用于存放句柄,这个句柄的值就是一个地址,

当这一块内存被移走后,windows就修改这个句柄的值,再访问这块内存时,句柄的值总是有效的。

正因为这样当你使用GlobalAlloc分配的内存时,如果你指定这块内存的属性是固定的,

那么它的返回值可以直接给一个指针,如果是可以移动的,

返回值就必须给一个句柄,你就必须先GlobalLock后才能使用。

这是我对句柄理解,不知道对不对?

我的理解

其实,句柄是一个指向指针的指针。即:

在windows程序设计中,句柄仅是一个应用程序用来识别某些事情的数字

如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。

我们知 道,所谓指针是一种内存地址。

应用程序启动后,组成这个程序的各对象是住留在内的 。

如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。

但是,如果您真的这样认为,那么您就大错特错了。

我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,

Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。

对象被移动意味着它的地址变化 了。如果地址总是如此变化,我们该到哪里去找该对象呢?

为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,

用来专门 登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。

Wi ndows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。

这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。

这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统 。

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

但是,必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是

原来的那个句柄,而且绝大多数情况的确不一样的。假如我们把进入**院看**看成

是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电

影院售给我们的门票总是不同的一个座位是一样的道理。