导致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等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

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

  1. 同事:别加班了,今天可是你们1024程序员节啊!

    今天是10月24日程序员节. 一大早,承旭元跟往常一样上班,作为一名普普通通的程序员,他知道1024程序员节纯属是大家调侃出来的非法定假日,不加班?不存在的,何况最近的项目也很赶. 别说1024程序员 ...

  2. 1024程序员节|去他的人傻钱多,码农的柔情,你永远不懂!

    "别人笑我太疯癫,我笑别人看不穿." 在"1024程序员节"的今天,小编想把这句话送给广大的程序员们,希望你们能在代码的海洋中继续快乐地遨游. 由于互联网创业公 ...

  3. 【综合类型第 37 篇】又是一年 1024 程序员节

    这是[综合类型第 37 篇],如果觉得有用的话,欢迎关注专栏. 到公司后才发现今天是 1024 程序员节,不过最近比较忙,忘记写博客了. 刚下班回到家,最近还是挺累的,不过也快完工了,fighting ...

  4. 1024 程序员节 | 请对身边的程序猿好一点

    程序员节起源 程序员的工作我们都知道,编程嘛.但为什么程序员节要在1024呢?1024最早火起来是因为一个"不可描述"的论坛,那里的回帖机制是:新用户发过贴之后,过1024秒才能发 ...

  5. MySQL之父等国际数据库掌门人齐聚,1024 程序员节全体大会重磅官宣!

    10月23-24日,由CSDN.长沙市政府及多家机构联合主办的第二届"长沙·中国1024程序员节"(1024.csdn.net)将盛大举行.今年程序员节活动囊括:岳麓书院尖峰对话, ...

  6. 1024程序员节,你是我们要找的那条锦鲤吗?

    参加2018 AI开发者大会,请扫描海报二维码 叮咚,您有一封 #1024吐槽狂欢派对# 邀请函请查收. ▌什么是程序员? 全员格子.黑框眼镜,还是等于创造力+忍耐力? 刻板标签.思维定式,还是高阶自 ...

  7. 【1024程序员节】都有什么?现场亲历者告诉你...

    前言 提起CSDN,基本上每个技术人或多或少都会有所耳闻,在实际学习和工作中大家遇到问题也都在CSDN中找到过解决方案.我自己使用CSDN的时间算下来也有将近十年左右的时间,在网站搜索解决方案的同时, ...

  8. 1024程序员节 | 我在腾讯自研数据库,我为技术代言

    随着互联网的发展,"程序员"这个名字逐渐为人们所关注到,其所代表的标签印象也变得更加多样 -- 改变世界?Debug专业户?格子衫代言人?--事实上,有那么一群人,比如腾讯数据库工 ...

  9. 1024程序员节来啦!!.NET技术圈独家优惠劵,折后再折,赶紧来抢啊

    1024程序员节 当当网计算机图书 每满100减50! 满200减100! 满300-150!   机械工业出版社华章公司联合当当网特意为[DotNET技术圈]用户申请了一批可与满减叠加使用的&quo ...

最新文章

  1. python爬取下拉列表数据_Python怎么爬取下拉式的网页?
  2. 单行Bash无限while循环的语法
  3. python 操作 postgresql 数据库
  4. 从零单排Java 8(2) —— Timestamp、String互转
  5. 2019牛客多校Monotonic Matrix
  6. python3多进程写时拷贝_python多进程实现复制文件
  7. SAP MM模块-实施顾问岗位-面试手册-面试准备
  8. 在本地测试一次成功的AJAX请求
  9. 跟我学习dubbo-简介(1)
  10. 成神之路——实施工程师
  11. win10安装PHP环境
  12. 基于Unity3D的PCAndroid端2D横屏冒险类闯关游戏
  13. V2X消息之SPAT消息解读
  14. 数据库的设计关键点总结
  15. resNet论文学习心得
  16. 基于机器学习的电力系统故障分类预测模型
  17. 钉钉的自动打卡上下班辅助android软件
  18. 给网站开发者推荐18个在线手册,值得收藏
  19. 微信支付与支付宝支付
  20. selenium 教程

热门文章

  1. Zookeeper与Kafka集群搭建
  2. 方法参数关键字:params、ref及out
  3. 25个恶意JavaScript 库通过NPM官方包仓库分发
  4. Bouncy Castle 加密库修复高危的认证绕过漏洞
  5. 关于 iOS 中 new Date()的坑
  6. Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置
  7. InflateException:Bin file line #19:Error inflating class MyTextView
  8. 万达9.3亿美元并购北欧最大院线 全球市场份额逼近20%
  9. Leetcode题目:House Robber
  10. html5扫面二维码逻辑