当前位置: 首页 > news >正文

昨天1024程序员节,我故意写了个死循环~

导致CPU100%的原因很多,而程序中出现死循环就是原因之一。然而,并不是每个人在工作中都有机会踩中这个坑。我就是其中一个没踩过的。人生似乎有些不完整。

所以,我做了一个很重要的决定:在程序中写一个死循环。看看会发生什么事情。

当然,不是在生产环境。 我搭建了一个实验环境来做实验。只是这个实验环境不仅可以用于这个死循环实验。以下是这个环境的结构图:

还是老样子,使用Vagrant + Virtualbox + Ansible自动化搭环境。

我们会写一个简单的Spring MVC 应用,然后其中一个接口里会有死循环代码:

以下是我自己尝试找出这个死循环的过程。

一、使用top,查看是哪个进程的问题

我请求一次:

http://192.168.88.10:9898/web/loop

然后,我打开新窗口,又请求一次

这里,我好奇CPU没有到200%。一直在120%和130%之间。P.S. 我一定是某个知识点不牢固,要不,不会有这个疑问。

二、堆空间

因为不涉及JVM堆空间问题,执行 jstat -gcutil 32593 1s 没看出什么问题。32593为Java进程ID,1s指1秒抽样一次。

三、栈

堆没问题,就看看是哪个线程占用得高。

列出java进程的线程,top -H -p <java 进程pid>

将jvm的栈dump下来 jstack -l <其中一个线程PID> >> stack.log,这里我选3596。

在日志中,找到相应的线程,我们需要从栈日志中找到相应的线程,但由于栈日志中使用的16进制,但是top中的PID又是10进制。所以,需要手工将10进制的PID转成16进制。3596的16进制转是0xe0c

四、小结

从这个解决的方式过程中,我们已经可以看出来一种基本的处理CPU 100%的情况了!希望对大家有所帮助!

欢迎工作一到五年的Java工程师朋友们加入Java填坑之路:860113481

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

相关文章:

  • Git常用命令记录
  • Algs4-2.1.32运行时间曲线图
  • BZOJ 3812 : 主旋律
  • 《JavaScript实用效果整理》系列分享专栏
  • 浅谈web中前端模板引擎的使用
  • pytorch实战(2)-----回归例子
  • 柔宇科技发售可折叠柔性屏手机 平板与手机从此二合一
  • 浅析宽带接入技术
  • 一个网工的Linux学习过程
  • 数据结构(算法)-图(最短距离Dijkstra)
  • Jessica Kerr:高绩效团队简史
  • Windows操作系统查看电脑开关机记录
  • 实现图元及属性的算法---椭圆生成算法
  • 大快搜索数据爬虫技术实例安装教学篇
  • 解决项目不编译4大clean
  • [LeetCode] Wiggle Sort
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • java中的hashCode
  • JSONP原理
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 不上全站https的网站你们就等着被恶心死吧
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 翻译:Hystrix - How To Use
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 使用 Docker 部署 Spring Boot项目
  • 微信小程序填坑清单
  • 小试R空间处理新库sf
  • 最近的计划
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #、%和$符号在OGNL表达式中经常出现
  • #每天一道面试题# 什么是MySQL的回表查询
  • (06)Hive——正则表达式
  • (2)MFC+openGL单文档框架glFrame
  • (2022 CVPR) Unbiased Teacher v2
  • (C语言)二分查找 超详细
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (六)激光线扫描-三维重建
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (三)mysql_MYSQL(三)
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (原創) 物件導向與老子思想 (OO)
  • (转)为C# Windows服务添加安装程序
  • ***测试-HTTP方法
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .Net Core与存储过程(一)
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net 验证控件和javaScript的冲突问题
  • .NET是什么
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • @DataRedisTest测试redis从未如此丝滑
  • @我的前任是个极品 微博分析