当前位置:首页 » 编程语言 » java进程cpu

java进程cpu

发布时间: 2022-09-05 02:05:38

㈠ 如何让java更好的利用多cpu

几个意见大致如下,第一,不能,因为“进程是CPU进行调度的单位,而JVM是一个进程,于是就只能跑在一个CPU上”。第二,“进程是CPU进行调度的单位,这没错,但是OS负责将一个进程在不同的CPU上调度到另外一个CPU上,而这个进程,则是由不同的线程构成的,那么说,线程还是在不同的CPU上运行了”。我更倾向于第二种解释,于是核心问题就变成了讨论“JVM能不能够将线程安排到不同的CPU上去运行呢?”。
最终,在SUN公司授权的《Java核心技术》,第7版卷II,第8版卷I,有关于“可运行线程”中,找到如下两句话:
“今天,人们很可能有单台拥有多个CPU的计算机,但是,并发执行的进程数并不是CPU数目制约的。操作系统的时间片分配给每一个进程,给人并行处理的感觉”。
好吧,上面的这句话,并不能说明这个答案,但是当我看到下面的这句原话的时候,感觉答案就在这里了:
"在具有多个处理器的机器上,每一个处理器运行一个线程,可以有多个线程并行运行。当然,如果线程的数目多于处理器的数目,调度器依然采用时间片机制"。这句话足以用来反驳那个出问题的人了,因为他的答案本身就是错的。
尽管,尽信书不如无书,但是,还能有更好的选择么?带着这个问题,继续走下去~ Fighting~ [email protected] I enjoy PM、Java、Oracle. I'm an English lover as well~ ho ho~
后记:
更详细的信息可以参见有关Java虚拟机实现的“并发”系列讲解,基本上每本关于Java虚拟机有关的书籍以及官方文档都会讲到JVM如何实现线程的几种方式。 基于系统内核,基于用户线程等等实现。JVM中的线程实现是本地化的~ 本地化的意思就是与平台有关了,尽管与平台有关,但是线程调度,仍旧是最佳高效的方式,有资料曾说过:线程的创建销毁与调度的开销是进程的三十分之一。

㈡ 查看JAVA进程中哪个线程CPU消耗最高

2.1 导出java运行的线程信息

jstack 进程id(jps查看)

jstack 进程id > ps.txt

jstack -l 进程id (窗口打印)

//另外还有一种方式

如果启动方式如下:

nohup java -classpath conf/:my.jar com.tank.manClass>./log.out 2>&1 &

则执行:kill -3 PID,进程信息会输出到/log.out

2.2 查找最消耗cpu的java线程

jps

找到java进程PID

命令:ps -mppid-o THREAD,tid,time 或者 ps -Lfppid

通过%CPU和 TIME,判断占用的线程TID

找到TID,转换成16进制,然后在上面(jstack 进程id > ps.txt)导出的文件中搜索,就可以定位到具体的线程,类。

㈢ java进程占用cpu高,不知道是什么进程

linux命令
top可以查询各个进程占用CPU的使用情况,找到command为Java的使用占用CPU高的相应的PID,然后用命令:ps
-ef|grep
Pid
此pid为你查询到的pid,就可以知道是哪个Java进程了

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

Java程序就是这样的,我去年做了一个桌面软件,也出现这样的问题,后来不用java的自动垃圾回收,在必要的时候手动调用System.gc(),这种情况就很少出现了,但是偶尔也还有。另外,CPU占用率过高的情况一般是编程的问题,重点考虑线程资源共享和网络流处理两个方面,java大部分的高CPU占用率都跟这两点有关系。

㈤ Java中CPU占用过高问题如何解决

方法1
1.jps 获取Java进程的PID。

2.jstack pid >> java.txt 导出CPU占用高进程的线程栈。

3.top -H -p PID 查看对应进程的哪个线程占用CPU过高。

4.echo “obase=16; PID” | bc 将线程的PID转换为16进制,大写转换为小写。

5.在第二步导出的Java.txt中查找转换成为16进制的线程PID。找到对应的线程栈。

6.分析负载高的线程栈都是什么业务操作。优化程序并处理问题。
方法2
1.使用top 定位到占用CPU高的进程PID

top

通过ps aux | grep PID命令

2.获取线程信息,并找到占用CPU高的线程

ps -mp pid -o THREAD,tid,time | sort -rn

3.将需要的线程ID转换为16进制格式

printf "%x\n" tid

4.打印线程的堆栈信息

jstack pid |grep tid -A 30

㈥ linux有一个java进程cpu达到100,怎么回事,程序进程多

cpu使用率高的原因及解决方法:
第一、杀毒软件,常见的金山、瑞星杀毒软件会对网页、插件等进行监控,这样就增大了系统负担,自然也就会造成cpu使用率高。
第二、驱动不达标,现在人们使用的驱动有几大一部分是属于测试版的驱动,这一类驱动并不合格,它可以造成CPU100%的使用率,而且不容易发觉。
第三、病毒木马,病毒在系统内部复制,必然造成极高的cpu占有率;
第四、网络链接,这是最直接的客观原因,主要是网络连接不稳定。
第五、启动项太多,一般来说开机启动项过多,就会增加cpu的使用率,增加其荷载。
第六、桌面尽量少放文件,在桌面上放过多的文件,极大的占用cpu,造成使用率过高。
第七、软件本身需要占有很高的CPU,比如一览器;有时有的软件和系统会有点不兼容。
第八、“svchost”进程影响,svchost.exe是系统的一个核心进程,svchost.exe有时非常令人头痛,如果看到某个svchost.exe占用很大CPU,这时可以去下aports或者fport来检察其对应的程序路径,看下是不是有程序调用svchost.exe。
第九、右击文件100%扥使用率,这个也是非常常见,在官方解释也很有意思。
第十、cpu温度过高,证明cpu本身就是出于不正常运行,自然也就会导致异常。
第十一、word文件过大,cpu对其拼写和语法检查过度。

㈦ Java的多线程和CPU

CPU对于各个线程的调度是随机的(分时调度),而在Java中,JVM负责线程的调度,可更好地分配CPU的使用权。对于线程的调度一般有两种模式,分时调度和抢占式调度。分时调度是按照顺序平均分配;抢占调度是按照优先级来进行分配。

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

多线程最容易造成资源死锁的,查查看那个没有释放资源~!还有缓冲池设置够不够大~!垃圾处理机制也要检查~!

㈨ Java如何定位占用CPU比较高的问题

一、确定消耗CPU的Java进程

备注:

1、jstack 输出的堆栈信息,线程id对应的16进制为小写,查找时要统一按照小写方式查找

2、jstack输出为当前瞬间的堆栈信息,如果遇到间断性出现CPU高的问题时,需要多输出几次

从上面方式定位到代码Test.main(Test.java:4)处导致了CPU偏高的问题,那我们查看下代码具体如何实现的?

代码实现:

public class Test {
public static void main(String[] args) {
while(true) {

}
}
}

从代码层面看该处实现了一个死循环,所以导致了线程占用CPU偏高的问题。

热点内容
电脑怎么查卡配置 发布:2025-01-14 20:01:29 浏览:27
手机怎么控制服务器 发布:2025-01-14 19:58:46 浏览:307
php难招 发布:2025-01-14 19:06:07 浏览:489
sublime编译php 发布:2025-01-14 18:57:16 浏览:307
云计算服务器是什么 发布:2025-01-14 18:56:22 浏览:44
vip域名查询ftp 发布:2025-01-14 18:46:48 浏览:116
格式化linux 发布:2025-01-14 18:35:14 浏览:595
如何进入安卓原生市场 发布:2025-01-14 18:22:06 浏览:560
台式电脑找不到服务器 发布:2025-01-14 18:19:58 浏览:423
androidsdk网盘 发布:2025-01-14 18:17:43 浏览:82