「java控制cpu」java控制cpu占用率

博主:adminadmin 2022-12-27 01:30:08 63

今天给各位分享java控制cpu的知识,其中也会对java控制cpu占用率进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java中 锁负责什么 CPU控制权又负责什么

放弃CPU的使用权,一般是该任务的运行条件得不到满足,比如需要等待其他任务的返回信息,或者等待超时时间。

这时候它一般会挂起自己,从而释放CPU和其他资源给别的任务。而被动放弃,一般是正在占用CPU的任务优先级不如其他唤醒或者启动的任务优先级高,在进行系统节拍任务切换时候,给更高优先级的任务让路。

Java进阶 Java应用程序中动态分配CPU资源[1]

Java的线程调度操作在运行时是与平台无关的 一个多任务系统需要在任务之间实现QoS(Quality of Service)管理时 如果CPU资源的分配基于Java线程的优先级 那么它在不同平台上运行时的效果是很难预测的 本文利用协调式多任务模型 提出一个与平台无关 并且能在任务间动态分配CPU资源的方案

现在 由于计算机系统已经从人机交互逐步向机机交互转化 计算机和计算机之间的业务对于时间的要求非常高 软件系统对于业务的支持已经不仅表现为对不同业务的逻辑和数据(算法+数据结构)支持 而且还表现为对同时处理不同任务的时效性 (任务响应速度)支持 一般 任务响应的速度可以通过算法优化及并行运算分担负载等手段来提高 但是 用户业务逻辑的复杂度决定了算法优化的发挥空间 硬件规模决定了所能够承担负载的大小 我们利用Java平台的特点 借鉴协调式多任务思想 使CPU资源能够在任务间动态分配 从而为时间要求强的任务分配更多的CPU运行资源 这也可以充分利用现有硬件 为用户业务提供最大的保障

用Java解决问题

本着软件系统结构和现实系统结构一致的思想 开发复杂业务服务的程序一般按照计算机任务和现实业务对应的思路 最终形成一个大规模的多任务系统 由于其跨平台性 Java系统可以随着业务的扩大 平滑地升级到各种硬件平台上 由于 Java自身的发展及其应用场合的不断扩大 用它实现多任务系统已经成为当前的应用方向 在J EE(Java Enterprise Edition)推出以后 Sun公司已经将Java的重心放在了服务器端(Server Side)系统的构造上 由于客户/服务器模型固有的多对一的关系 服务器端程序也必然是一个多任务系统

在Java多任务应用中 动态地将CPU资源在任务间分配有很重要的意义 比如一个 Internet服务商的系统往往有多种任务同时运行 有HTTP FTP MAIL等协议的支持 也有商务 娱乐 生活 咨询等业务的服务 在白天 网站希望系统的CPU资源尽量保障网上用户的服务质量 提高电子商务等任务的响应速度;晚上则希望让自己的娱乐服务和资料下载尽可能满足下班后人们的需要 另外 在新兴的网管(比如TMN Telemunication Management Neork)等应用领域中 服务程序往往需要支持成千上万个并发响应事件的被管理对象(MO Managed Object) 对于被管理对象执行的操作 不同用户在不同时刻往往有不同的时间要求

方案选择

在考虑动态分配CPU资源的实施方案时 往往有以下两点要求

须充分利用现有硬件资源 在系统空闲时 让低优先级任务也能够得到系统所能给予的最快响应

当硬件资源超负荷运行时 虽然系统中有大规模 多数量的任务不能处理 但它不应受影响 而能够顺利处理那些能够被处理的 最重要的高优先级任务

多任务系统要用多线程实现的最简单方法就是将线程和任务一一对应 动态调整线程的优先级 利用线程调度来完成CPU资源在不同任务间动态分配 这种思路在以前使用本地化代码(Native Code) 充分利用特定硬件和操作系统技巧的基础上是基本可行的 但在跨平台的Java环境中 这个思路对仅有小规模任务数的简单系统才可行 原因有以下两点

lishixinzhi/Article/program/Java/hx/201311/27234

Java应用程序中如何动态的分配CPU资源?

方案选择

在考虑动态分配CPU资源实施方案时,往往有以下两点要求:

1. 须充分利用现有硬件资源,在系统空闲时,让低优先级任务也能够得到系统所能给予最快响应。

2.当硬件资源超负荷运行时,虽然系统中有大规模、多数量任务不能处理,但它不应受影响,而能够顺利处理那些能够被处理、最重要高优先级任务。

多任务系统要用多线程实现最简单方法就是将线程和任务一一对应,动态调整线程优先级,利用线程调度来完成CPU资源在不同任务间动态分配。这种思路在以前使用本地化代码(Native Code),充分利用特定硬件和操作系统技巧基础上是基本可行。但在跨平台Java环境中,这个思路对仅有小规模任务数简单系统才可行,原因有以下两点:

1. Java线程虽然在编程角度(API)是与平台无关,但它运行效果却和不同操作系统平台密切相关。为了利用更多CPU资源,Java中一个线程(Thread)就对应着不同操作系统下一个真实线程。因为Java虚拟机没有实现线程调度,所以这些Java线程在不同操作系统调度下运行差异性也就比较明显。例如在Windows系统中,不仅线程优先级少于Java API参数规定十个优先级,而且微软明确反对程序员动态调整线程优先级。即使在操作系统中有足够优先权,让线程优先级参数和真实线程优先级对应,不同操作系统调度方式也会有许多不同。这最终会造成代码在不同平台上行为变得不可预测。这就很难满足复杂、大规模并发任务众多优先级需求,从而很难达到用户业务需要达到效果。

2. 由于在Java系统中,线程被包装在一个Java语言对象类—Thread中,所以为了完成Java语言对象和操作系统线程对应,Java线程系统开销还是比较大(在NT 4.0中,平均每个线程大致占用30KB内存)。因此如果让Thread对象个数和成千上万任务数同比例增长,就显然是不合理。

内容摘要:本文利用协调式多任务模型,提出一个与平台无关、并且能在任务间动态分配CPU资源方案。

综上所述,根据并发多任务大规模需求和Java平台固有特点,想要利用Java Thread对象优先级调整CPU资源分配是非常困难,所以应该尽量避免让线程和任务直接对应,也尽量避免使用操作系统线程优先级调度机制。

解决方案

根据以上分析,问题症结在于:多任务系统中任务在Java语言中对应以及任务间相互调度。

 从本质上看,一个任务就是一系列对象方法调用序列,与JavaThread对象或者别类对象没有必然联系。在避免使用不同操作系统线程调度且同时Java虚拟机又没有线程调度能力情况下,要想构造一个协调式多任务系统,让各个任务相互配合就成了最直接思路。协调式多任务系统一般有以下特点:

1. 任务由消息驱动,消息响应代码完成任务逻辑处理;

2. 消息队列完成消息存储和管理,从而利用消息处理次序体现任务优先级不同;

3. 任务中耗时消息响应逻辑能够主动放弃CPU资源,让别任务执行(像Windows 3.1中Yield函数、Visual Basic中DoEvents语句)。

可能出于巧合,Java语言具有构造协调式多任务系统天然条件。Java对象方法不仅是一个函数调用,它还是一个java.lang.reflect.Method类对象。而所有对象方法都可以通过Method类invoke方法调用。如果能使每个任务所对应一系列方法全部以对象形式包装成消息,放到消息队列中,然后再按照自己优先级算法将队列中消息取出,执行其Method对象invoke调用,那么一个基本协调式多任务系统就形成了。其中,任务优先级和线程优先级没有绑定关系。该系统主体调度函数可以设置成一个“死循环”,按照需要优先级算法处理消息队列。对于有多重循环、外设等待等耗时操作消息响应函数,可以在响应函数内部递归调用主体调度函数,这一次调用把原来“死循环”改成在消息队列长度减少到一定程度(或者为空)后退出。退出后,函数返回,执行刚才没有完成消息响应逻辑,这样就非常自然地实现了协调式系统中任务主动放弃CPU资源要求。

怎样用java实现CPU的调度?要用到什么类?

cpu调度及内存分配算法

写的一个操作系统的实验,篇幅原因,只给了内存分配和回收代码.

/**

单 位:中南大学软件学院0501班

文 件:CpuScheduler.java

项 目:操作系统cpu调度算法模拟程序

作 者:刘欣

创建时间:2007年5月14日

**/

public static void InitMem(){

MemTable = new memory();

MemTable.Setmem_beg(0);

MemTable.Setmem_size(100);

MemTable.Setmem_state(0);

}

public boolean InitMemory(Pcb temp){

memory mem_temp,last,now;

last = MemTable;

mem_temp = new memory(temp.GetName(),temp.Getmem_size());

boolean flag = true;

if(mem_temp.Getmem_size() 100 ){

c.tcpuinfo.setText(mem_temp.GetPcd_name()+"is too big");

flag = false;

}

if(MemTable == null){

return flag;

}

if(mem_temp.Getmem_size() + nowsize 100){

c.tcpuinfo.setText("memory has been full please wait");

flag = false;

}

if(MemTable.Getmem_state() == 0){// if the first is empty;

if(MemTable.Getmem_size() mem_temp.Getmem_size()){

mem_temp.next = MemTable;

mem_temp.Setmem_beg( last.Getmem_beg() );

mem_temp.Setmem_state(1);

MemTable.Setmem_beg(mem_temp.Getmem_beg() + mem_temp.Getmem_size());

MemTable.Setmem_size( MemTable.Getmem_size()-mem_temp.Getmem_size() );

MemTable = mem_temp;

nowsize += mem_temp.Getmem_size();

return flag;

}

if (MemTable.Getmem_size() == mem_temp.Getmem_size()){

// MemTable.SetPcd_name(mem_temp.GetPcd_name());

mem_temp = MemTable;

mem_temp.Setmem_state(1);

mem_temp.next = MemTable;

nowsize += mem_temp.Getmem_size();

return flag;

}

}

// begin obtain the other;

if(last != null){

now = last.next;

while(now != null){// search the teble for sutible memory;

if(now.Getmem_state() == 0){// if the first is empty;

if(now.Getmem_size() mem_temp.Getmem_size()){

mem_temp.next = now;

mem_temp.Setmem_beg( now.Getmem_beg() );

mem_temp.Setmem_state(1);

now.Setmem_beg(mem_temp.Getmem_beg() + mem_temp.Getmem_size());

now.Setmem_size( now.Getmem_size()-mem_temp.Getmem_size() );

last.next = mem_temp;

nowsize += mem_temp.Getmem_size();

return flag;

}

else if (now.Getmem_size() == mem_temp.Getmem_size()){

now.SetPcd_name(mem_temp.GetPcd_name());

mem_temp = now;

mem_temp.Setmem_state(1);

last.next = mem_temp;

nowsize += mem_temp.Getmem_size();

return flag;

}

}

last = now;

//if(last != null){

now = now.next;

//}

}

}

return flag;

}

public void ReleaseMem(Pcb Temp){

memory mem_temp,last,now;

mem_temp = new memory(Temp.GetName(),Temp.Getmem_size());

if(MemTable == null){

c.tcpuinfo.setText("无内存可释放");

//return false;

}

last = MemTable;

now = last.next;

if (MemTable.GetPcd_name() == mem_temp.GetPcd_name()){//如果第一个就是要释放的分区;

MemTable.Setmem_state(0);

MemTable.SetPcd_name(null);

if(now != null now.Getmem_state() == 0 ){//如果后邻接分区也是空闲的;

MemTable.Setmem_size(MemTable.Getmem_size() + now.Getmem_size());

MemTable.SetPcd_name(null);

nowsize -= mem_temp.Getmem_size();

MemTable.next = null;

// return true;

}

}

while (now != null){//在链表中寻找要释放的分区;

if(now.GetPcd_name() == mem_temp.GetPcd_name()){//找到;

nowsize -= mem_temp.Getmem_size();

now.Setmem_state(0);

if(now.next != null now.next.Getmem_state() == 0){//查看后面相邻结点是否有空闲;

last.next = now.next;

now.next.Setmem_beg(now.Getmem_beg());

now.next.Setmem_size(now.Getmem_size() + now.next.Getmem_size());

now = last.next;

now.SetPcd_name(null);

}

if(last.Getmem_state() == 0){//查看前面相邻结点是否有空闲;

last.next = now.next;

last.Setmem_size(last.Getmem_size() + now.Getmem_size());

last.SetPcd_name(null);

now = last.next;

// now.SetPcd_name(null);

}

}

last = now;

now = now.next;

}

}

怎么用JAVA实现监控LINUX下CPU的使用率???

我们在使用Windows XP操作系统的时候,用着用着系统就变慢了,一看“ 任务管理器 ”才发现CPU占用达到100%。这是怎么回事情呢?遇到病毒了,硬件有问题,还是系统设置有问题,在本文中笔者将从硬件,软件和病毒三个方面来讲解系统资源占用率为什么会达到100%。

经常出现CPU占用100%的情况,主要问题可能发生在下面的某些方面:

CPU占用率高 的九种可能

1、防杀毒软件造成 故障

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

2、驱动没有经过认证,造成CPU资源占用100%

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

3、 病毒、木马 造成

大量的蠕虫病毒在系统内部迅速复制,造成CPU占用资源率据高不下。解决办法:用可靠的杀毒软件彻底清理系统内存和本地硬盘,并且打开系统设置软件,察看有无异常启动的程序。经常性更新升级杀毒软件和防火墙,加强防毒意识,掌握正确的防杀毒知识。

4、控制面板— 管理工具 —服务—RISING REALTIME MONITOR SERVICE 点鼠标右键,改为手动。

5、开始-运行-msconfig-启动,关闭不必要的启动项,重启。

6、查看“ svchost ”进程。

svchost . exe 是Windows XP系统 的一个核心进程。 svchost.exe 不单单只出现 在Window s XP中,在使用 NT 内核的 Windows系统 中都会有svchost.exe的存在。一般在 Windows 2000 中 svchost.exe进程 的数目为2个,而 在Windows XP中svchost.exe进程的数目就上升到了4个及4个以上。

7、查看 网络连接 。主要是网卡。

8、查看网络连接

当安装了Windows XP的计算机做服务器的时候,收到端口 445 上的连接请求时,它将分配内存和少量地调配 CPU资源来为这些连接提供服务。当负荷过重的时候,CPU占用率可能过高,这是因为在工作项的数目和响应能力之间存在固有的权衡关系。你要确定合适的 MaxWorkItems 设置以提高系统响应能力。如果设置的值不正确,服务器的响应能力可能会受到影响,或者某个用户独占太 多系统 资源。

要解决此问题,我们可以通过修改注册表来解决:在 注册表编辑器 中依次展开[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver ]分支,在右侧窗口中 新建 一个名为“maxworkitems”的 DWORD值 。然后双击该值,在打开的窗口中键入下列数值并保存退出:

如果计算机有512MB以上的内存,键入“1024”;如果计算机内存小于 512 MB,键入“256”。

9、看看是不是Windows XP使用鼠标右键引起CPU占用100%

前不久的报到说在资源管理器里面使用鼠标右键会导致CPU资源100%占用,我们来看看是怎么回事?

征兆:

在资源管理器里面,当你右键点击一个目录或一个文件,你将有可能出现下面所列问题:

任何文件的拷贝操作在那个时间将有可能停止相应

网络连接速度将显著性的降低

所有的流输入/输出操作例如使用Windows Media Player 听音乐将有可能是音乐失真成因:

当你在资源管理器里面右键点击一个文件或目录的时候,当快捷 菜单显示 的时候,CPU占用率将增加到100%,当你关闭快捷菜单的时候才返回正常水平。

解决方法:

方法一:关闭“为菜单和工具提示使用过渡效果”

1、点击“开始”--“控制面板”

2、在“控制面板”里面双击“显示”

3、在“显示”属性里面点击“外观”标签页

4、在“外观”标签页里面点击“效果”

5、在“效果”对话框里面,清除“为菜单和工具提示使用过渡效果”前面的复选框接着点击两次“确定”按钮。

方法二:在使用鼠标右键点击文件或目录的时候先使用鼠标左键选择你的目标文件或目录。然后再使用鼠标右键弹出快捷菜单。

CPU占用100%解决办法

一般情况下CPU占了100%的话我们的电脑总会慢下来,而很多时候我们是可以通过做 一点点 的改动就可以解决,而不必问那些大虾了。

当机器慢下来的时候,首先我们想到的当然是任务管理器了,看看到底是哪个程序占了较搞的比例,如果是某个大程序那还可以原谅,在关闭该程序后只要CPU正常了那就没问题;如果不是,那你就要看看是什幺程序了,当你查不出这个进程是什幺的时候就去google或者 baidu 搜。有时只结束是没用的,在 xp下 我们可以结合msconfig里的启动项,把一些不用的项给关掉。在2000下可以去下个winpatrol来用。

一些常用的软件,比如浏览器占用了很搞的CPU,那幺就要升级该软件或者干脆用别的同类软件代替,有时软件和系统会有点不兼容,当然我们可以试下xp系统下给我们的那个兼容项,右键点该. exe文件 选兼容性。

svchost.exe有时是比较头痛的,当你看到你的某个svchost.exe占用很大CPU时你可以去下个aports或者fport来检查其对应的程序路径,也就是什幺东西在掉用这个svchost.exe,如果不是c:\Windows\ system32 (xp)或c:\winnt\system32(2000)下的,那就可疑。升级杀毒软件杀毒吧。

右击 文件导致100%的CPU占用我们也会遇到,有时点右键停顿可能就是这个问题了。官方的解释:先点左键选中,再右键(不是很理解)。非官方:通过在桌面点右键-属性-外观-效果,取消”为菜单和工具提示使用下列过度效果(U)“来解决。还有某些杀毒软件对文件的监控也会有所影响,可以 关闭杀毒软件 的文件监控;还有就是对网页,插件,邮件的监控也是同样的道理。

一些驱动程序有时也可能出现这样的现象,最好是选择微软认证的或者是官方发布的驱动来装,有时可以适当的升级驱动,不过记得最新的不是最好的。

CPU降温软件 ,由于软件在运行时会利用所以的CPU空闲时间来进行降温,但Windows不能分辨普通的CPU占用和 降温软件 的降温指令 之间的区别 ,因此CPU始终显示100%,这个就不必担心了,不影响正常的系统运行。

在处理较大的 word文件 时由于word的拼写和语法检查会使得CPU累,只要打开word的工具-选项-拼写和语法把”检查拼写和检查语法“勾去掉。

单击 avi视频 文件后CPU占用率高是因为系统要先扫描该文件,并检查文件所有部分,并建立索引;解决办法:右击保存视频文件的文件夹-属性-常规-高级,去掉为了快速搜索,允许索引服务编制该文件夹的索引的勾。

CPU占用100%案例分析

1、 dllhost进程造成CPU使用率占用100%

特征:服务器正常CPU消耗应该在75%以下,而且CPU消耗应该是上下起伏的,出现这种问题的服务器,CPU会突然一直处100%的水平,而且不会下降。查看任务管理器,可以发现是DLLHOST.EXE消耗了所有的CPU空闲时间,管理员在这种情况下,只好重新启动IIS服务,奇怪的是,重新启动IIS服务后一切正常,但可能过了一段时间后,问题又再次出现了。

直接原因:

有一个或多个ACCESS数据库在多次读写过程中损坏,微软的 MDAC 系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态,结果其它线程只能等待,IIS被死锁了,全部的CPU时间都消耗在DLLHOST中。

解决办法:

安装“一流信息监控拦截系统”,使用其中的“首席文件检查官IIS健康检查官”软件,

启用”查找死锁模块”,设置:

--wblock=yes

监控的目录,请指定您的主机的文件所在目录:

--wblockdir=d:\test

监控生成的日志的文件保存位置在安装目录的log目录中,文件名为:logblock.htm

停止IIS,再启动“首席文件检查官IIS健康检查官”,再启动IIS,“首席文件检查官IIS健康检查官”会在logblock.htm中记录下最后写入的ACCESS文件的。

过了一段时间后,当问题出来时,例如CPU会再次一直处100%的水平,可以停止IIS,检查logblock.htm所记录的最后的十个文件,注意,最有问题的往往是计数器类的ACCESS文件,例如:”**COUNT. MDB ”,”**COUNT.ASP”,可以先把最后十个文件或有所怀疑的文件删除到回收站中,再启动IIS,看看问题是否再次出现。我们相信,经过仔细的查找后,您肯定可以找到这个让您操心了一段时间的文件的。

找到这个文件后,可以删除它,或下载下来,用ACCESS2000修复它,问题就解决了。

2、 svchost.exe造成CPU使用率占用100%

在win.ini文件中,在[Windows]下面,“run=”和“load=”是可能加载“木马”程序的途径,必须仔细留心它们。一般情况下,它们的等号后面什幺都没有,如果发现后面跟有路径与文件名不是你熟悉的启动文件,你的计算机就可能中上“木马”了。当然你也得看清楚,因为好多“木马”,如“AOL Trojan木马”,它把自身伪装成command.exe文件,如果不注意可能不会发现它不是真正的系统启动文件。

在system.ini文件中,在[BOOT]下面有个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名”,那幺后面跟着的那个程序就是“木马”程序,就是说你已经中“木马”了。

在注册表中的情况最复杂,通过regedit命令打开注册表编辑器,在点击至:“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE,这里切记:有的“木马”程序生成的文件很像系统自身文件,想通过伪装蒙混过关,如“Acid Battery v1.0木马”,它将注册表“HKEY-LOCAL-MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”下的Explorer 键值改为Explorer=“C:\Windows\expiorer.exe”,“木马”程序与真正的Explorer之间只有“i”与“l”的差别。当然在注册表中还有很多地方都可以隐藏“木马”程序,如:“HKEY-CURRENT-USER\Software\Microsoft\Windows\CurrentVersion\Run”、“HKEY-USERS\****\Software\Microsoft\Windows\CurrentVersion\Run”的目录下都有可能,最好的办法就是在“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”下找到“木马该病毒也称为“Code Red II(红色代码2)”病毒,与早先在西方英文系统下流行“红色代码”病毒有点相反,在国际上被称为VirtualRoot(虚拟目录)病毒。该蠕虫病毒利用Microsoft已知的溢出漏洞,通过80端口来传播到其它的Web页服务器上。受感染的机器可由黑客们通过Http Get的请求运行scripts/root.exe来获得对受感染机器的完全控制权。

当感染一台服务器成功了以后,如果受感染的机器是中文的系统后,该程序会休眠2天,别的机器休眠1天。当休眠的时间到了以后,该蠕虫程序会使得机器重新启动。该蠕虫也会检查机器的月份是否是10月或者年份是否是2002年,如果是,受感染的服务器也会重新启动。当Windows NT系统启动时,NT系统会自动搜索C盘根目录下的文件explorer.exe,受该网络蠕虫程序感染的服务器上的文件explorer.exe也就是该网络蠕虫程序本身。该文件的大小是8192字节,VirtualRoot网络蠕虫程序就是通过该程序来执行的。同时,VirtualRoot网络蠕虫程序还将cmd.exe的文件从Windows NT的system目录拷贝到别的目录,给黑客的入侵敞开了大门。它还会修改系统的注册表项目,通过该注册表项目的修改,该蠕虫程序可以建立虚拟的目录C或者D,病毒名由此而来。值得一提的是,该网络蠕虫程序除了文件explorer.exe外,其余的操作不是基于文件的,而是直接在内存中来进行感染、传播的,这就给捕捉带来了较大难度。

”程序的文件名,再在整个注册表中搜索即可。

我们先看看微软是怎样描述svchost.exe的。在微软知识库314056中对svchost.exe有如下描述:svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。

其实svchost.exe是Windows XP系统的一个核心进程。svchost.exe不单单只出现在Windows XP中,在使用NT内核的Windows系统中都会有svchost.exe的存在。一般在Windows 2000中svchost.exe进程的数目为2个,而在Windows XP中svchost.exe进程的数目就上升到了4个及4个以上。所以看到系统的进程列表中有几个svchost.exe不用那幺担心。

svchost.exe到底是做什幺用的呢?

首先我们要了解一点那就是Windows系统的中的进程分为:独立进程和共享进程这两种。由于Windows系统中的服务越来越多,为了节约有限的系统资源微软把很多的系统服务做成了共享模式。那svchost.exe在这中间是担任怎样一个角色呢?

svchost.exe的工作就是作为这些服务的宿主,即由svchost.exe来启动这些服务。svchost.exe只是负责为这些服务提供启动的条件,其自身并不能实现任何服务的功能,也不能为用户提供任何服务。svchost.exe通过为这些系统服务调用动态链接库(DLL)的方式来启动系统服务。

svchost.exe是病毒这种说法是任何产生的呢?

因为svchost.exe可以作为服务的宿主来启动服务,所以病毒、木马的编写者也挖空心思的要利用svchost.exe的这个特性来迷惑用户达到入侵、破坏计算机的目的。

如何才能 辨别 哪些是正常的svchost.exe进程,而哪些是 病毒进程 呢?

svchost.exe的键值是在“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost”,如图1所示。图1中每个键值表示一个独立的svchost.exe组。

微软还为我们提供了一种察看系统正在运行在svchost.exe列表中的服务的方法。以Windows XP为例:在“运行”中输入:cmd,然后在命令行模式中输入:tasklist /svc。系统列出如图2所示的服务列表。图2中红框包围起来的区域就是svchost.exe启动的服务列表。如果使用的是Windows 2000系统则把前面的“tasklist /svc”命令替换为:“tlist -s”即可。如果你怀疑计算机有可能被病毒感染,svchost.exe的服务出现异常的话通过搜索 svchost.exe文件 就可以发现异常情况。一般只会找到一个在:“C:\Windows\System32”目录下的svchost.exe程序。如果你在其它目录下发现svchost.exe程序的话,那很可能就是中毒了。

还有一种确认svchost.exe是否中毒的方法是在任务管理器中察看进程的执行路径。但是由于在Windows系统自带的任务管理器不能察看进程路径,所以要使用第三方的进程察看工具。

上面简单的介绍了svchost.exe进程的相关情况。总而言之,svchost.exe是一个系统的核心进程,并不是病毒进程。但由于svchost.exe进程的特殊性,所以病毒也会千方百计的入侵svchost.exe。通过察看svchost.exe进程的执行路径可以确认是否中毒。

3、 Services.exe造成CPU使用率占用100%

症状

在基于 Windows 2000 的计算机上,Services.exe 中的 CPU 使用率可能间歇性地达到100 %,并且计算机可能停止响应(挂起)。出现此问题时,连接到该计算机(如果它是文件服务器或域控制器)的用户会被断开连接。您可能还需要重新启动计算机。如果 Esent.dll 错误地处理将文件刷新到磁盘的方式,则会出现此症状。

解决方案

Service Pack 信息

要解决此问题,请获取最新的 Microsoft Windows 2000 Service Pack。有关其它信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

260910 如何获取最新的 Windows 2000 Service Pack

修复程序信息

Microsoft 提供了受支持的修补程序,但该程序只是为了解决本文所介绍的问题。只有计算机遇到本文提到的特定问题时才可应用此修补程序。此修补程序可能还会接受其它一些测试。因此,如果这个问题没有对您造成严重的影响,Microsoft 建议您等待包含此修补程序的下一个 Windows 2000 Service Pack。

要立即解决此问题,请与“Microsoft 产品支持服务”联系,以获取此修补程序。有关“Microsoft 产品支持服务”电话号码和支持费用信息的完整列表,请访问 Microsoft Web 站点:

注意 :特殊情况下,如果 Microsoft 支持专业人员确定某个特定的更新程序能够解决您的问题,可免收通常情况下收取的电话支持服务费用。对于特定更新程序无法解决的其它支持问题和事项,将正常收取支持费用。

下表列出了此修补程序的全球版本的文件属性(或更新的属性)。这些文件的日期和时间按协调通用时间 (UTC) 列出。查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用“控制面板”中的“日期和时间”工具中的 时区 选项卡。

状态

Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中存在的问题。此问题最初是在 Microsoft Windows 2000 Service Pack 4 中更正的。

4、正常软件造成CPU使用率占用100%

首先,如果是从开机后就发生上述情况直到关机。那幺就有可能是由某个随系统同时登陆的软件造成的。可以通过运行输入“msconfig”打开“系统实用配置工具”,进入“启动”选项卡。接着,依次取消可疑选项前面的对钩,然后重新启动电脑。反复测试直到找到造成故障的软件。或者可以通过一些优化软件如“优化大师”达到上述目的。另:如果键盘内按键卡住也可能造成开机就出现上述问题。

如果是使用电脑途中出项这类问题,可以调出任务管理器(WINXP CTRL+ALT+DEL WIN2000 CTRL+SHIFT“ESC),进入”进程“选项卡,看”CPU“栏,从里面找到占用资源较高的程序(其中SYSTEM IDLE PROCESS是属于正常,它的值一般都很高,它的作用是告诉当前你可用的CPU资源是多少,所以它的值越高越好)通过搜索功能找到这个进程属于哪个软件。然后,可以通过升级、关闭、卸载这个软件或者干脆找个同类软件替换,问题即可得到解决。

5、病毒、木马、间谍软件造成CPU使用率占用100%

出现CPU占用率100% 的故障经常是因为病毒木马造成的,比如震荡波病毒。应该首先更新病毒库,对电脑进行全机扫描 。接着,在使用反间谍软件Ad—Aware,检查是否存在间谍软件。论坛上有不少朋友都遇到过svchost.exe占用CPU100%,这个往往是中毒的表现。

svchost.exe Windows中的系统服务是以动态链接库(DLL)的形式实现的,其中一些会把可执行程序指向svchost.exe,由它调用相应服务的动态链接库并加上相应参数来启动服务。正是因为它的特殊性和重要性,使它更容易成为了一些病毒木马的宿主。

6、 explorer.exe进程造成CPU使用率占用100%

在system.ini文件中,在[BOOT]下面有个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名”,那幺后面跟着的那个程序就是“木马”程序,就是说你已经中“木马”了。

在注册表中的情况最复杂,通过regedit命令打开注册表编辑器,在点击至:“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE,这里切记:有的“木马”程序生成的文件很像系统自身文件,想通过伪装蒙混过关,如“Acid Battery v1.0木马”,它将注册表“HKEY-LOCAL-MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”下的

Explorer 键值改为Explorer=“C:\Windows\expiorer.exe”,“木马”程序与真正的Explorer之间只有“i”与“l”的差别。当然在注册表中还有很多地方都可以隐藏“木马”程序,如:“HKEY-CURRENT-USER\Software\Microsoft\Windows\CurrentVersion\Run”、“HKEY-USERS\****\Software\Microsoft\Windows\CurrentVersion\Run”的目录下都有可能,最好的办法就是在“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”下找到“木马”程序的文件名,再在整个注册表中搜索即可。

7、超线程导致CPU使用率占用100%

这类故障的共同原因就是都使用了具有超线程功能的P4 CPU。我查找了一些资料都没有明确的原因解释。据一些网友总结超线程似乎和天网防火墙有冲突,可以通过卸载天网并安装其它防火墙解决,也可以通过在BIOS中关闭超线程功能解决。

8、AVI视频文件造成CPU使用率占用100%

在Windows XP中,单击一个较大的AVI视频文件后,可能会出现系统假死现象,并且造成exploere.exe进程的使用率100%,这是因为系统要先扫描该文件,并检查文件所有部分,建立索引。如果文件较大就会需要较长时间并造成CPU占用率100%。解决方法:右键单击保存视频文件的文件夹,选择”属性—常规—高级“,去掉”为了快速搜索,允许索引服务编制该文件夹的索引“前面复选框的对钩即可。

9、杀毒软件CPU使用率占用100%

现在的杀毒软件一般都加入了,对网页、邮件、个人隐私的即时监空功能,这样无疑会加大系统的负担。比如:在玩游戏的时候,会非常缓慢。关闭该杀毒软件是解决得最直接办法。

10、处理较大的Word文件时CPU使用率过高

上述问题一般还会造成电脑假死,这些都是因为WORD的拼写和语法检查造成的,只要打开WORD的“工具—选项”,进入“拼写和语法”选项卡,将其中的“键入时检查拼写”和“键入时检查语法”两项前面的复选框中的钩去掉即可。

11、网络连接导致CPU使用率占用100%

当你的Windows2000/xp作为服务器时,收到来自端口445上的连接请求后,系统将分配内存和少量CPU资源来为这些连接提供服务,当负荷过重,就会出现上述情况。要解决这个问题可以通过修改注册表来解决,打开注册表,找到HKEY—LOCAL—MACHNE\SYSTEM\CurrentControlSet\Services\lanmanserver,在右面新建一个名为";maxworkitems";的DWORD值.然后双击该值,如果你的电脑有512以上内存,就设置为";1024";,如果小于512,就设置为256.

一些不完善的驱动程序也可以造成CPU使用率过高

经常使用待机功能,也会造成系统自动关闭硬盘DMA模式。这不仅会使系统性能大幅度下降,系统启动速度变慢,也会使是系统在运行一些大型软件和游戏时CPU使用率100%,产生停顿。

怎么用JAVA实现监控LINUX下CPU的使用率??? windows下怎么查看呢?用什么方法? 请高手指教,谢谢!

用java的话,有两个方法:

1.利用java直接调用shell命令查看cpu的参数(系统不同命令也不同)

类似代码:

可以查考

2.利用软件linux下可以安装net-snmp实现远程和本地监控

具体方法的话比较负责你网上查查

因为不知道你的linux到底是什么系统所有我没法给你写命令

java控制cpu的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java控制cpu占用率、java控制cpu的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。