0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Java服务器内存和CPU占用过高的原因

汽车玩家 来源:今日头条 作者:太平洋海角 2020-03-21 15:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、内存占用过高

1、造成服务器内存占用过高只有两种情况:内存溢出或内存泄漏

(1)内存溢出:程序分配的内存超出物理内存的大小,导致无法继续分配物理内存,出现OOM报错。

(2)内存泄漏:不再调用的对象一直占用着内存不释放,导致所占用的这块内存被浪费掉,久而久之,内存泄漏的对象堆积起来,也会导致物理机的内存被耗尽,出现OOM报错。

2、内存过高的检测办法:

一般我们的Java服务器都是部署在Linux机器上面,可以通过jvm自带的命令进行一些检测:

(1)查看对象的数目和占用内存大小;

(2)如果需要进一步定位问题代码,那么就需要把Java程序的内存镜像导出,再具体分析了,通过如下命令导出程序的内存镜像。

二、CPU使用过高

1、当程序发现CPU使用过高的情况时,可以使用Windows系统的Process Explorer工具来找到CPU高消耗的线程,所以需要在Windows机器上面搭建好服务器的测试环境,尽量模拟出线上CPU飙升的情况;

2、模拟好环境后,通过任务管理器,在进程一栏中找到Java程序的进程号;

3、下载Process Explorer工具:

4、打开工具后,根据刚才的进程号找到进程;

5、然后右键-->Properties,再选择Threads选项卡,点进CPU排序,可以找到消耗CPU最多的那个线程;

6、使用科学计算器,将十进制的线程号转成十六进制,比如493620-->78834;

7、到此已经拿到了可能出问题的进程号和线程号,接下来使用jvm内置的命令来导出Java的堆栈信息:

jstack -l <进程号> > <导出目录+文件名>

8、打开导出的堆栈信息,并全文搜索刚刚拿到的十六进制的线程号,就可以找到出问题的代码具体位置了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11216

    浏览量

    222948
  • 内存
    +关注

    关注

    9

    文章

    3173

    浏览量

    76115
  • JAVA
    +关注

    关注

    20

    文章

    2997

    浏览量

    115683
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    服务器数据恢复—服务器断电导致raid模块损坏的数据恢复案例

    某品牌服务器中有12块硬盘,组建了一组raid5磁盘阵列,服务器内存储的是普通文件。 机房供电不稳定导致服务器断电,管理员重启服务器后发现
    的头像 发表于 09-04 12:57 456次阅读

    华纳云服务器角色服务器失败的原因和解决办法

    是常见的,这可能导致数据丢失、系统停机和效率降低等严重后果。因此,了解服务器角色故障的原因和影响,并采取有效的预防措施,对于确保业务连续性和数据安全性至关重要。 一、服务器角色故障的原因
    的头像 发表于 07-17 18:18 427次阅读

    服务器CPU架构解析,从x86到ARM:一文吃透其分类及对应品牌优势

    为什么你的服务器总在"喘气"?CPU架构才是关键。大家可能都遇到过这样的情况:公司刚采购的服务器用了不到半年,跑个数据库就像老牛拉车,加内存换硬盘都没用。这时候老工程师会叼着烟告诉你:
    的头像 发表于 04-30 15:11 1566次阅读
    <b class='flag-5'>服务器</b><b class='flag-5'>CPU</b>架构解析,从x86到ARM:一文吃透其分类及对应品牌优势

    新加坡服务器延迟大吗?真相在这里#新加坡服务器 #服务器

    服务器
    jf_57681485
    发布于 :2025年04月18日 13:48:50

    龙芯3C6000服务器CPU,16核32线程,国产CPU新标杆!

    服务器
    国产计算机小秦
    发布于 :2025年04月10日 11:10:04

    龙芯3C6000服务器CPU,16核32线程,国产CPU新标杆!

    服务器
    jf_10805031
    发布于 :2025年04月09日 10:44:40

    服务器使用过程中卡顿如何排查

    技巧,希望能有所帮助。 服务器卡顿的情况下,请先检查服务器的使用情况。  1、CPU使用率是否大于50%。  2、内存使用率是否过高。  3
    的头像 发表于 03-31 17:04 920次阅读

    DeepSeek企业级部署服务器资源计算 以raksmart裸机云服务器为例

    以RakSmart裸机云服务器为例,针对DeepSeek企业级部署的服务器资源计算指南,涵盖GPU/CPU/内存/存储/网络等核心维度的详细计算方法与配置推荐,主机推荐小编为您整理发布
    的头像 发表于 03-21 10:17 818次阅读

    服务器托管的收费标准依据

    不同机架空间占用直接影响费用。例如,1U服务器在二三线城市年费约4000元,而一线城市如广州则需6000元左右。 CPU内存、存储 :高配置服务器
    的头像 发表于 02-27 15:31 1263次阅读
    <b class='flag-5'>服务器</b>托管的收费标准依据

    服务器电源故障原因有哪些,服务器电源故障判断方法

    服务器作为现代数据中心的核心组件,其稳定性和可靠性至关重要。电源作为服务器的“心脏”,其故障可能导致整个系统停机,严重影响业务的连续性和数据的安全性。本文旨在深入探讨服务器电源故障的常见原因
    的头像 发表于 01-30 14:26 2569次阅读

    新加坡云服务器网络中断的常见原因有哪些

    此类问题。 服务器硬件故障:服务器本身的硬件出现问题,如CPU内存、硬盘或电源等故障,会影响服务器的正常运行,进而导致网络中断。比如硬盘损
    的头像 发表于 01-13 17:03 1176次阅读

    服务器 Flexus X 实例:轻量级 http 服务器 Tinyhttpd 部署

     来体验 Flexus 云服务器 X 实例 。 一、云服务器 Flexus 首先,进入官网购买 Flexus 云服务器 X 实例,点击这里购买,点击购买界面如下所示。 其中,CPU
    的头像 发表于 01-07 16:59 917次阅读
    云<b class='flag-5'>服务器</b> Flexus X 实例:轻量级 http <b class='flag-5'>服务器</b> Tinyhttpd 部署

    服务器 Flexus X 实例,镜像切换与服务器压力测试

    服务器 Flexus X 压力测试 1、购买华为云 Flexus X 实例 Flexus云服务器X实例-华为云 (huaweicloud.com)   2、xshell 远程连接服务器 3、安装
    的头像 发表于 01-03 09:23 807次阅读
    云<b class='flag-5'>服务器</b> Flexus X 实例,镜像切换与<b class='flag-5'>服务器</b>压力测试

    Flexus 云服务器 X 实例:在 Docker 环境下搭建 java 开发环境

    和开发者精心打造。它以卓越的柔性算力,为我们在 Docker 环境下搭建 java 开发环境提供有力支撑。 一、Flexus 云服务器 X 实例介绍 1.1 Flexus 云服务器 X 实例简介 华为云
    的头像 发表于 12-30 09:07 869次阅读
    Flexus 云<b class='flag-5'>服务器</b> X 实例:在 Docker 环境下搭建 <b class='flag-5'>java</b> 开发环境

    Jtti:新加坡服务器的性能如何评估

    Jtti 新加坡服务器的性能表现如下: 硬件配置 :Jtti新加坡服务器使用Intel Xeon E5-2660处理,这是高性能的服务器CPU
    的头像 发表于 12-19 15:15 746次阅读