Java程序占CPU多怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java程序占CPU多怎么办?相关的知识,希望对你有一定的参考价值。

我开了个程序,在任务管理器中显示的是java但最近几天突然占用CPU很多,在网上找了很多解决办法,有的太专业看不懂,请问有没有简单点的解决办法,或者说的详细点,谢谢!

把jdk卸载掉,控制面板——添加删除程序——找到jdk删除就可以卸载了。
或者去开始——程序——找到jdk,卸载掉就行了。
或者找到jdk安装文件夹。里面有卸载文件的。java是在此环境上运行的,只要没了运行环境它是启动不了的追问

我用一个软件出来的JAVA,如果我把那个jdk删了,那我那个程序还能正常用吗?

追答

那肯定不行了

参考技术A 直接下个鲁大师,检测下CPU温度变化情况,如果温度变化幅度很大,达到70度以上看了,一般就是CPU散热器的问题换了就OK,我遇到过同样的情况。 参考技术B 你看看你的java任务是哪个?追问

我知道是哪个,但那个程序我必须要用,以前用都没有过这种情况

追答

你的程序时哪个 贴出来看看先

java 多线程 cpu 占用率高的问题

我写了一个多线程下载的小程序,我创建了10个线程同时下载,cpu占用率很高,不知道是什么原因,请大家帮忙,主要代码如下
public class test implements Runnable

public InputStream in=null;
public FileOutputStream out=null;

@Override
public void run()


//打开网络连接获取 inputstream 对象
//略........
this.out = new FileOutputStream(this.filepath,true);
byte[] bytes = new byte[4096];
while((c = this.in.read(bytes))!= -1) // c 是从网络连接取得的inputstream

this.out.write(bytes,0,c);

this.out.close();
this.in.close();



另外问一下, bytes为4096字节 会不会溢出,如何避免溢出?
几位有没有办法让CPU占用率降下来,用buffered的文件流可以让cpu降下来吗,我试一下,别的地方还有什么要改的,请大家多指导?

不会溢出字节数最好是最小磁盘空间簇的倍数,或者整块内存空间字节数。那么不会太浪费资源。请问你是不是使用线程池,如果使用创建线程对象的方式太浪费资源了。
楼主有没有使用线程池,如果没有你是不是使用固定数量的线程还是不定数量的线程。

使用BUFFER可以提高读写效率
参考技术A CPU 占用率高是很正常的事情,个人觉得(饿,我是老白...不是高手..)
我也不知道你这个CPU占用率具体”多高“,因此也不好判断你这么高是不是正常

其次,溢出问题。
4096一般够用了,你可以想象一下一般的键盘输入缓存是多大就知道了
你不放心的话可以加一个try catch语句。本回答被提问者采纳
参考技术B cpu占用高很正常,十个线程而且你while里只是写入。cpu开销当然会很大
4096 4K,十个40K 输入输出流 对内存来说可以忽略不计
参考技术C I see a potential problem of your implementation. It might unnecessarily invoke too many times the underlying file system's write method which is expensive. You can use buffered output stream to avoid it:

...
public OutputStream out=null;
...
this.out = new BufferedOutputStream(new FileOutputStream(this.filepath,true));

以上是关于Java程序占CPU多怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

Java程序CPU占用过高怎么解决

JAVA程序占CPU100%,求解决办法!

java程序占用CPU极高,请问是怎么回事?

Java程序CPU占用过高怎么解决

java有啥类可以获得cpu占用率?

java怎样获取CPU占用率和硬盘占用率