`
d2hellen
  • 浏览: 105751 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

关于java在linux下消耗cpu的问题。

 
阅读更多
最近在做的一个java的后台服务器,在window下测试对cpu占用率极小,但是迁移到linux下去导致linux下的cpu占用率极高;



通过努力分析,终于在不起眼的地方发现问题所在:


public class BidCheck { 
	public static void main(String[] args) throws Exception{        
		////定时器,1秒后开始执行,每隔180秒再执行
		Timer timer = new Timer();
		timer.schedule(new java.util.TimerTask() { public void run() { 
			Run r = new Run();    
			Thread t = new Thread(r);      
			t.start(); 
		} }, 1000, 180000);
		
		//while(true){//)这个是用来停止此任务的,否则就一直循环执行此任务了
		//	try{
		//		int ch = System.in.read();
		//		if(ch-'c'==0){
		//			timer.cancel();//使用这个方法退出任务
		//		}
		//	}catch (IOException e) {
		//		e.printStackTrace();
		//	}
		//}
	}
}



就是这段代码导致问题,这段代码的目的是在用户输入了一个字符q的时候,终止后台运行,当把这段代码注释后,在此部署到linux系统,系统的cpu的占用率就下来了。



在分析,这段代码没有什么特殊的地方,我们只要关注这句话:read = System.in.read();

看来 System.in.read方法在linux和windows下面实现的效果是不同的。



建议大家在linux系统下面关注  System.in.read() 适当使用,防止导致linux负荷过高。

分享到:
评论

相关推荐

    java监控linux cpu使用率

    请注意,由于JVM自身的开销,直接测量的CPU使用率可能包含JVM的消耗,因此在某些情况下可能需要进一步调整。 此外,还可以结合其他监控工具,如Prometheus、Grafana或JMX工具,将Java程序集成到更全面的系统监控...

    linux下查看java进程下线程占用cpu情况

    通过以上方法,你可以深入了解Linux下Java进程及线程对CPU的占用情况,从而进行问题定位和性能优化。在实际操作中,通常会结合多个工具和方法,以便从不同角度全面分析。记得,持续监控和分析是找出问题的关键。

    用java获取CPU占用率

    首先,Java程序需要识别运行的操作系统类型,因为不同的操作系统(如Windows和Linux)提供了不同的API或系统调用来访问CPU占用信息。在提供的代码示例中,`System.getProperty("os.name")`用于获取操作系统名称,...

    jProfiler7 java内存分析 linux版本

    - 内存分析是识别和解决Java应用程序中的内存泄漏、过度对象创建和内存消耗过高问题的关键步骤。 - jProfiler7提供了详细的内存分配和存活周期视图,帮助开发者定位内存占用大的对象和可能导致问题的代码片段。 2...

    Java应用程序开发LINUX平台.chm

    JVisualVM(包含在JDK中)和JProfiler等工具可以帮助分析内存使用、CPU消耗和线程状态,以优化应用性能。 总之,Java应用程序开发在Linux平台涉及众多方面,从基础环境配置到高级工具使用,都需要开发者具备全面的...

    纯Java实现的Linux任务管理器

    【描述】中提到,该程序是"纯Java编写",这意味着整个项目完全依赖于Java平台,利用Java的跨平台特性,可以在任何安装了Java运行环境(JRE)的Linux系统上运行。"有完善的图形界面"表明,开发者在设计时注重用户体验...

    CPU 高消耗排查

    - 在某些情况下,我们可能需要将线程ID从十进制转换为十六进制格式,以便更好地与Java虚拟机(JVM)中的线程标识符匹配。 - 命令示例:`[root@3server ~]# printf '%0x' 5159` - 这里使用了`printf`命令,将线程ID ...

    CPU占用高

    标题“CPU占用高”指的是计算机或服务器的中央处理器在运行过程中消耗资源过多,导致系统响应变慢或无法正常处理任务的现象。这种情况可能是由于多种因素引起的,包括但不限于恶意软件、资源密集型应用程序、系统...

    eclipse-java-2019-03-R-linux-gtk-x86_64.tar.gz

    因此,选择一个与系统兼容性较好的Eclipse版本,如2019-03-R,可以避免过度消耗CPU和内存资源,确保IDE的稳定运行。同时,如果确实遇到性能问题,可以通过增加虚拟机的CPU核心数和内存大小来提升性能。 标签...

    最新版linux jdk-11.0.12_linux-x64_bin.tar.gz

    在Linux环境下,JDK扮演着至关重要的角色,因为它使得开发者能够在Linux平台上构建和运行Java应用。 首先,我们来了解下JDK的核心组件: 1. **Java编译器(javac)**:它是将源代码(.java文件)转换为字节码(....

    教你找出 运行java项目,使cpu 100%,如何排查出是哪个jar包的哪个线程导致的

    在Java开发过程中,有时会遇到项目运行时CPU占用率达到100%的问题,这可能是由于某个线程的无限循环、阻塞或者资源消耗过大导致的。以下是一套详细的排查步骤来帮助你找出是哪个jar包的哪个线程造成了这个问题。 ...

    基于java通过第三方jar包sigar的支持,完成对服务器系统的参数监控,包括CPU、内存、硬盘以及网络流量的实时监控.zip

    通过这些数据,我们可以分析出服务器是否受到CPU瓶颈的影响,或者哪个进程可能在消耗过多的CPU资源。 内存监控是另一个重要的方面。Sigar提供了获取物理内存、交换内存、以及各个进程内存使用情况的功能。这包括总...

    show-busy-java-threads-jvm-cpu.rar

    3. **无休止循环**:某个线程陷入无限循环,不断消耗CPU资源。 4. **资源争抢**:多个线程竞争共享资源,导致CPU在等待锁的过程中被过度占用。 5. **垃圾收集问题**:Java的垃圾收集机制可能过于频繁或者执行时间过...

    Java 服务器信息监控

    在"Java 服务器信息监控"项目中,开发者可以编写代码来获取不同操作系统(如Windows、Linux)下的系统资源信息。这些信息包括但不限于CPU利用率、内存使用情况、网络接口状态以及服务运行状态。 首先,让我们关注...

    基于Linux网络计算机Java虚拟机的性能优化.pdf

    在当前的技术环境中,Linux网络计算机(Network Computer, NC)在执行Java应用程序时,常常面临性能不足的问题。Java虚拟机(JVM)作为运行Java应用的关键组件,其执行效率直接影响了整体系统的性能。针对这一挑战,...

    jprofiler_linux_4_3_2.tar.gz 和 JProfiler在Linux上的安装和使用.rar

    《JProfiler在Linux环境下的安装与使用详解》 JProfiler是一款强大的Java性能分析工具,它提供了内存泄漏检测、CPU性能分析、线程监控等多种功能,是开发者优化Java应用的得力助手。本篇文章将详细讲解如何在Linux...

    面向LinuxNC的Java虚拟机的性能优化.pdf

    :本文主要探讨了在Linux网络计算机(NC)环境中优化Java虚拟机(JVM)性能的问题,提出了一种基于直接线索式解释器的优化方案,并设计了三项扩展优化策略,旨在提升JVM在Linux NC上的运行效率,同时降低CPU和内存...

    linux文件操作,linux下关闭tomcat失效的处理方法,linux下压缩文件

    本文将深入探讨如何在Linux环境下进行文件操作,解决Tomcat服务失效的问题,以及如何进行文件压缩。以下是对这些主题的详细阐述: 一、Linux文件操作 1. 文件与目录操作:在Linux中,文件和目录统称为文件对象。...

Global site tag (gtag.js) - Google Analytics