`
xuexing
  • 浏览: 24029 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

(原)Java死循环造成CPU占用率特别高

阅读更多
在Socket编程中,要采用多线程去处理网络流,客户端需要不停的去监听端口中是否有数据过来,这里采用基本的流收发,DataInputStream在所有的read方法都是阻塞的,只有available这一个方法是非阻塞的,当我判断是否有流的时间,采用available但网络流无数据的时间造成了无限循环,使CPU的占用比达到50%,当去掉这个判断之后,当调用read方法的时间就阻塞到哪里,这样CPU的占用比为0%(约等于),可见我们在写程序的时间,要时刻关注我们程序里面的死循环,最好是在if后面加上else输出一句话,或者DEBUG一下。我倾向于前者,更加直观。
分享到:
评论

相关推荐

    【原创】java程序cpu占用过高问题分析

    在Java编程中,CPU占用过高是一个常见的性能问题,可能由多种因素引起,包括但不限于不当的算法选择、线程过多、循环优化不足、垃圾回收(GC)问题、内存泄漏或资源竞争等。这篇原创博客“【原创】java程序cpu占用过...

    Java中一个线程执行死循环有什么后果

    这种情况下,线程A可以被认为是一个高CPU占用率的任务,可能会影响到系统的整体性能,特别是当系统资源有限时。 线程间的通信方式有很多种,例如使用wait()、notify()或notifyAll()方法进行同步控制,或者使用...

    70-Java程序CPU占用1001

    通过输入`top`命令,我们可以看到各个进程的CPU和内存使用率,从中找出CPU占用率最高的Java进程。记下该进程的PID(进程ID)。 2. **获取问题线程的TID** 接下来,我们需要找出这个进程中的具体哪个线程导致了CPU...

    Java进程cpu占用过高问题解决

    Java进程cpu占用过高问题解决是指Java进程中cpu占用率过高的问题,导致了系统性能下降和服务器崩溃。解决这个问题需要了解Java进程的cpu占用率的原因,并采取相应的措施来解决。 cpu占用率过高的原因: 1、Java ...

    一次因Java应用造成CPU过高的排查实践过程

    本文将深入探讨一次由于Java应用导致CPU占用过高的排查实践过程。 首先,当发现应用CPU使用率异常时,第一步是确认是否真的是计算密集型任务导致的。在大多数情况下,CPU高负荷往往是由于程序中的逻辑错误,如死...

    java排查一个线上死循环cpu暴涨的过程分析

    本文将详细解析一个典型的线上问题:Java应用程序出现死循环导致CPU暴涨的过程及排查方法。 首先,问题的现象是打开一个特定页面时,CPU使用率瞬间飙升至100%,使得系统运行变得极其缓慢。在这种情况下,首要任务是...

    windows下查看线程的cpu占用率工具 procexp

    例如,如果发现某个Java线程CPU占用过高,可以结合代码分析找出可能的死循环或者计算密集型任务,进行相应的优化。 总的来说,ProcExp 是一个强大的系统诊断工具,它提供的线程级监控功能在日常的系统管理和故障...

    jvm排查cpu占用过高的线程

    1、用top命令找到cpu占用率最高的进程号是8958 top 2、top -Hp pid 命令找到该进程下cpu占用最高的线程(shift+p 按cpu排序,shift+m 按内存排序) top -Hp 8958 3、使用 printf ‘%x\n’ PID (PID为上一步中获取...

    JVM---jstack分析Java线程CPU占用,线程死锁的解决

    当Java应用的CPU占用率飙高时,可能导致系统响应变慢甚至无法正常处理新请求。以下是一些分析步骤: 1. **模拟问题**:首先,我们可以编写一个包含死循环的Java程序,使CPU使用率上升。 2. **观察CPU占用**:在...

    cpu打满问题分析思路

    进一步检查发现,生产环境服务器的CPU占用率持续处于高位,峰值达到了600%,而且没有迹象表明它能够自行恢复至正常水平。为了解决这个问题,运维团队尝试了调整JVM参数和重启服务器等多种措施,但未能恢复正常。 ##...

    java引起的linux服务器性能问题查找

    3. **定位高CPU占用线程**:在切换到线程模式后,可以观察到哪些线程的CPU占用率异常高。通过这种方式,可以快速锁定问题线程。 #### 二、使用jstack获取线程堆栈信息 1. **获取线程ID**:在top命令中找到高CPU...

    CPU飙升问题CPU飙升问题

    2. **死循环**:代码中可能存在无休止的循环,这些循环在运行时会持续占用CPU,直到问题被发现并修复。 3. **垃圾回收(GC)频繁**:Java的垃圾回收机制在处理大量对象创建和销毁时,可能会引起CPU使用率上升。尤其是...

    解决java程序运行慢问题.doc

    二是死循环(hash 冲突攻击),即一个线程一直占用一个核的所有 CPU 资源。解决方法是使用 checkPerf 脚本,定位这个线程具体执行的任务,并对应看代码解决。 三、 内存泄露 内存泄露是 Java 程序运行慢问题的常见...

    java性能分析文档

    Java性能分析是优化Java应用程序的关键步骤,它涉及监控和理解应用程序在运行时的资源消耗,如CPU使用率、内存分配、线程活动等。Performance Analyzer是一款专门针对Java性能的工具,它提供了深入洞察应用程序性能...

    Java 运行时监控

    - **CPU使用率**:高CPU使用率可能是代码效率低下或死循环等问题的表现。监控CPU使用情况有助于定位性能问题。 - **I/O监控**:网络、磁盘I/O也是影响性能的重要因素。监控I/O可以帮助我们发现是否存在资源争抢或...

    java问题定位技术

    2. **Java代码死循环等导致的CPU过高分析**: - 查找长时间处于`RUNNABLE`状态的线程。 - 检查是否有无限循环或其他占用CPU的代码。 3. **高消耗CPU代码的常用分析方法**: - 使用`jstack`等工具定期采样线程...

    MySQL Java开发实战.pdf

    例如,通过分析内存泄露可以发现程序中是否有对象无法正常释放,CPU高使用率可能指向计算密集型任务或者死循环,而网络问题可能影响到数据库连接的稳定性和响应速度。 5. **项目构建与技术选型**:使用Spring Boot ...

    java问题定位技术+性能优化

    - **1.3.2 Java代码死循环等导致的CPU过高分析** - 分析线程堆栈中是否有长时间处于RUNNABLE状态的线程,尤其是检查是否有无限循环的情况。 - **1.3.3 高消耗CPU代码的常用分析方法** - 使用性能监控工具(如...

Global site tag (gtag.js) - Google Analytics