JVM性能优化之CPU负载过高
本文来说下JVM性能优化之CPU负载过高的问题
文章目录
- 概述
- 程序测试
- 问题定位
- 本文小结
概述
一般性结论:一般来说,CPU占用高不高的问题,不是给定一个数值,例如90%以上就算高,以下就算正常,正常来说,随着程序的运行,CPU不断变化,百分之几,百分之几十,百分之百,都有可能,而CPU持续的高位,例如一直300%或者更多800%(多核),才可以认定为CPU占用过高问题。
对于java来说,频繁的IO读写,创建过多的线程,CPU都会较高,而线程死锁或者死循环基本是导致cpu高的罪魁祸首。
程序测试
本人在Windows上编写了一个测试程序
package cn.wideth.buz.utils;public class MyThread implements Runnable{@Overridepublic void run() {long i = 0;//死循环会导致不断的IO操作,造成CPU偏高while(true){i++;if(i % 1000000 == 0){System.out.println(Thread.currentThread().getName() + " -->" + i);}}}public static void main(String[] args) {for(int i = 0; i < 3; i++){MyThread myThread = new MyThread();Thread thread = new Thread(myThread);thread.start();}}
}
问题定位
由于程序是在window上编写的测试程序,所以先到任务管理器中找到CPU占用比较高的进程的PID,如果是LINUX环境下,直接使用top命令得到进程占用比较多PID即可。
使用jstack -l PID命令得到定位线程信息
将线程信息保存在一个临时文件中,使用命令jstack -l 74680 > tempfile.txt即可
从当前进程的堆栈信息中定位到CPU占用比较高的代码
本文小结
如果线上出现了CPU过高的情况,一般是代码中出现了无限循环等情况。可以先找到CPU占用比较多的进程id,Linux中使用top命令,Windows中可以到任务管理器中查看,然后使用jstack -1 PID命令打印进内的堆栈信息,结合代码即可找到占用CPU的问题。
JVM性能优化之CPU负载过高相关推荐
- 【JVM】十、CPU负载过高分析
原生分析方式 1.使用 top 命令查看线程占用 cup 比率 [tomcat@localhost ~]$ top Tasks: 189 total, 1 running, 188 sleeping, ...
- 【linux性能优化】CPU使用率过高分析
最常用什么指标来描述系统的 CPU 性能呢? 可能不是平均负载,也不是 CPU上下文切换,而是另一个更直观的指标CPU使用率 CPU使用率是单位时间内CPU使用情况的统计,以百分比的方式展示 那么,作 ...
- 性能优化之CPU占用率高(一)
文章部分摘于,点击查看原文 当我们cpu使用率高的情况下会出现什么情况? 我们访问程序的速度比较慢,运行时间长. 系统崩溃,无法访问程序. 什么情况会导致Java应用程序的CPU使用率飙 ...
- JVM性能优化, Part 2 ―― 编译器
2019独角兽企业重金招聘Python工程师标准>>> ImportNew注:本文是JVM性能优化 – 第2篇 <JVM性能优化, Part 2 ―― 编译器>第一篇 & ...
- 【Java架构师】JVM性能优化(一)JVM技术入门下
JVM性能和"一次编译,到处运行"的挑战 我有新的消息告诉那些固执的认为Java平台本质上是缓慢的人.当Java刚刚做为企业级应用的时候,JVM被诟病的Java性能问题已经是十几年 ...
- linux 排查cpu负载过高原因
CPU负载查看方法: 使用vmstat查看系统维度的CPU负载 使用top查看进程维度的CPU负载 一.测试工具 1.使用 vmstat 查看系统纬度的 CPU 负载: 可以通过 vmstat 从系统 ...
- 性能优化专题 - JVM 性能优化 - 04 - GC算法与调优
目录导航 前言 Garbage Collect(垃圾回收) 如何确定一个对象是垃圾? 引用计数法 可达性分析 垃圾收集算法 标记-清除(Mark-Sweep) 复制(Copying) 标记-整理(Ma ...
- JVM性能优化(一)
作者 Eva Andreasson Java应用程序是运行在JVM上的,但是你对JVM技术了解吗?这篇文章(这个系列的第一部分)讲述了经典Java虚拟机是怎么样工作的,例如:Java一次编写的利弊,跨 ...
- JVM性能优化, Part 1 - JVM简介
原文出自:http://www.importnew.com/1774.html 众所周知,Java应用程序是运行在JVM上的,但是你对JVM有所了解么?作为这个系列文章的第一篇,本文将对经典Java虚 ...
最新文章
- React 组件绑定点击事件,并且传参完整Demo
- 用户稿件 | 好家伙,到底谁在用TBtools?
- 未来医疗AI发展的八大趋势
- 张亚勤院士谈“智能计算新趋势”
- python requests下载文件很慢-python requests 下载大文件不完整
- 关于python的全局变量和局部变量、以下描述错误的是_Python:全局变量与局部变量的问题...
- 域控制器显示无法使用解决办法
- 前端学习(3180):ant-design介绍3
- Spark面试题梳理
- ASP.NET 实践:锁定 ASP.NET 配置设定
- Jenkins自动化UI测试Tomcat报错“The web application [/jenkins] appears to have started a thread named”解决办法...
- python编程从入门到实践
- 简述 Erasure Code,EC 纠删码原理
- 通达OA2017版连接sqlserver2008数据库
- 理想国pandas练习题3
- 使用软碟通(UltraISO)刻录Linux系统
- html5 运动轨迹绘画,html5 canvas行星运动轨迹动画特效
- 程序员的思维修炼读书笔记(二)
- 通达OA二次开发手册
- 手游开发商Plarium游戏玩家超3.8亿!揭秘新作《突袭: 暗影传说》制作流程