Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 331|回复: 0

window中java进程占用高问题解决

[复制链接]
  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 757 天

    [LV.10]以坛为家III

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    707886
    发表于 2021-7-22 00:31:19 | 显示全部楼层 |阅读模式

    java程序cpu占用过高问题分析

    标签:  java  程序  cpu | 发表时间:2014-06-26 02:02 | 作者:阳光雨露
    分享到:
    出处:http://www.iteye.com

    针对某个java程序cpu占用过高问题分析,要想找到问题的真正原因,首先要明确cpu过高的进程,通过对进程下线程的分析,定位到具体的应用代码,从而定位问题的原因所在。

        在jdk自带的分析工具中,通过jconsole只能分析到应用程序的相关系统资源使用情况,但无法定位应用程序,故通过此工具了解到应用程序存在问题,但要具体定位到哪块程序不合理造成的是很困难的。 
        通常java程序部署在windows或者linux下,首先来介绍一下windows下分析的步骤:
        1:首先,要获取windows下应用程序在操作系统中的进程id,查看的方式,可以从任务管理器中查看,也可以通过命令查看,通过任务管理器查看我这边就不再累赘了,现在介绍一下通过命令查看的方式,首先打开cmd窗口,输入tasklist命令: 
     
     
    此时发现在应用程序的进程id为6424
        目前应用程序的cpu使用情况如下:
        即项目一起动,程序没有处理任何业务的情况下,cpu占用已经在49左右了,我截图的时候还是偏低了情况。
        其次,要分析一下为什么用占用过高的问题,接下来需要使用一个window的一个自带命令,首先确认一下你的window是否安装了pslist命令程序,如果命令不认别,可以上微软的官网下载,下载地址为:http://technet.microsoft.com/en-us/sysinternals/bb896682.aspx
    下载完直接解压到C:\WINDOWS\system32下即可,此命令的作用是获取进程下线程列表,比如说pslist -dmx 6424
    从以上截图是6424进程下线程的使用情况,可以发现线程3872的占用率很高,于是现在开始要定位到是哪个应用程序造成的问题
        第三:在这里需要使用jstack jdk自带的一个命令工具,关于jstack的用法,大家可以百度一下,网上关于这个命令的使用详解很多,我在这就不再多说了,通过jstack 6424 >C:\test\cdf.log就可以获取到程序的相关信息
        最后:把占用cpu的线程的id转换成16进行的数据
    打开cdf.log文件,从中搜索f20,即可得到以下结果
    即在at cn.sslsocket.SSLSocketClient.run(SSLSocketClient.java:239)中run方式就执行某段代码出现占用过高的问题,经过代码定位,发现在此处出现在了死循环,修复即可
     
        通过以上分析,大家应该有一个比较清楚的了解,解决此类问题首先要知道怎么入手,接着要定位到问题的发生点,这样才能从根本上解决问题。
        关于linux下如何解决此问题我在此就不多说了,其它步骤是一样的,只是用到的命令可能不一样而已!

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-7-2 23:40 , Processed in 0.062330 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表